{
  "id": "2d7992b4cccf2a47ae464259a6d29f74",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.27",
  "solcLongVersion": "0.8.27+commit.40a35a09",
  "input": {
    "language": "Solidity",
    "sources": {
      "@ethereum-attestation-service/eas-contracts/contracts/Common.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n// A representation of an empty/uninitialized UID.\nbytes32 constant EMPTY_UID = 0;\n\n// A zero expiration represents an non-expiring attestation.\nuint64 constant NO_EXPIRATION_TIME = 0;\n\nerror AccessDenied();\nerror DeadlineExpired();\nerror InvalidEAS();\nerror InvalidLength();\nerror InvalidSignature();\nerror NotFound();\n\n/// @notice A struct representing ECDSA signature data.\nstruct Signature {\n    uint8 v; // The recovery ID.\n    bytes32 r; // The x-coordinate of the nonce R.\n    bytes32 s; // The signature data.\n}\n\n/// @notice A struct representing a single attestation.\nstruct Attestation {\n    bytes32 uid; // A unique identifier of the attestation.\n    bytes32 schema; // The unique identifier of the schema.\n    uint64 time; // The time when the attestation was created (Unix timestamp).\n    uint64 expirationTime; // The time when the attestation expires (Unix timestamp).\n    uint64 revocationTime; // The time when the attestation was revoked (Unix timestamp).\n    bytes32 refUID; // The UID of the related attestation.\n    address recipient; // The recipient of the attestation.\n    address attester; // The attester/sender of the attestation.\n    bool revocable; // Whether the attestation is revocable.\n    bytes data; // Custom attestation data.\n}\n\n/// @notice A helper function to work with unchecked iterators in loops.\nfunction uncheckedInc(uint256 i) pure returns (uint256 j) {\n    unchecked {\n        j = i + 1;\n    }\n}\n"
      },
      "@ethereum-attestation-service/eas-contracts/contracts/EAS.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.27;\n\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\n\nimport { EIP1271Verifier } from \"./eip1271/EIP1271Verifier.sol\";\n\nimport { ISchemaResolver } from \"./resolver/ISchemaResolver.sol\";\n\n// prettier-ignore\nimport {\n    AccessDenied,\n    EMPTY_UID,\n    InvalidLength,\n    NotFound,\n    NO_EXPIRATION_TIME,\n    uncheckedInc\n} from \"./Common.sol\";\n\n// prettier-ignore\nimport {\n    Attestation,\n    AttestationRequest,\n    AttestationRequestData,\n    DelegatedAttestationRequest,\n    DelegatedRevocationRequest,\n    IEAS,\n    MultiAttestationRequest,\n    MultiDelegatedAttestationRequest,\n    MultiDelegatedRevocationRequest,\n    MultiRevocationRequest,\n    RevocationRequest,\n    RevocationRequestData\n} from \"./IEAS.sol\";\n\nimport { Semver } from \"./Semver.sol\";\nimport { ISchemaRegistry, SchemaRecord } from \"./ISchemaRegistry.sol\";\n\n/// @title EAS\n/// @notice The Ethereum Attestation Service protocol.\ncontract EAS is IEAS, Semver, EIP1271Verifier {\n    using Address for address payable;\n\n    error AlreadyRevoked();\n    error AlreadyRevokedOffchain();\n    error AlreadyTimestamped();\n    error InsufficientValue();\n    error InvalidAttestation();\n    error InvalidAttestations();\n    error InvalidExpirationTime();\n    error InvalidOffset();\n    error InvalidRegistry();\n    error InvalidRevocation();\n    error InvalidRevocations();\n    error InvalidSchema();\n    error InvalidVerifier();\n    error Irrevocable();\n    error NotPayable();\n    error WrongSchema();\n\n    /// @notice A struct representing an internal attestation result.\n    struct AttestationsResult {\n        uint256 usedValue; // Total ETH amount that was sent to resolvers.\n        bytes32[] uids; // UIDs of the new attestations.\n    }\n\n    // The global schema registry.\n    ISchemaRegistry private immutable _schemaRegistry;\n\n    // The global mapping between attestations and their UIDs.\n    mapping(bytes32 uid => Attestation attestation) private _db;\n\n    // The global mapping between data and their timestamps.\n    mapping(bytes32 data => uint64 timestamp) private _timestamps;\n\n    // The global mapping between data and their revocation timestamps.\n    mapping(address revoker => mapping(bytes32 data => uint64 timestamp) timestamps) private _revocationsOffchain;\n\n    /// @dev Creates a new EAS instance.\n    /// @param registry The address of the global schema registry.\n    constructor(ISchemaRegistry registry) Semver(1, 3, 0) EIP1271Verifier(\"EAS\", \"1.3.0\") {\n        if (address(registry) == address(0)) {\n            revert InvalidRegistry();\n        }\n\n        _schemaRegistry = registry;\n    }\n\n    /// @inheritdoc IEAS\n    function getSchemaRegistry() external view returns (ISchemaRegistry) {\n        return _schemaRegistry;\n    }\n\n    /// @inheritdoc IEAS\n    function attest(AttestationRequest calldata request) external payable returns (bytes32) {\n        AttestationRequestData[] memory data = new AttestationRequestData[](1);\n        data[0] = request.data;\n\n        return _attest(request.schema, data, msg.sender, msg.value, true).uids[0];\n    }\n\n    /// @inheritdoc IEAS\n    function attestByDelegation(\n        DelegatedAttestationRequest calldata delegatedRequest\n    ) external payable returns (bytes32) {\n        _verifyAttest(delegatedRequest);\n\n        AttestationRequestData[] memory data = new AttestationRequestData[](1);\n        data[0] = delegatedRequest.data;\n\n        return _attest(delegatedRequest.schema, data, delegatedRequest.attester, msg.value, true).uids[0];\n    }\n\n    /// @inheritdoc IEAS\n    function multiAttest(MultiAttestationRequest[] calldata multiRequests) external payable returns (bytes32[] memory) {\n        // Since a multi-attest call is going to make multiple attestations for multiple schemas, we'd need to collect\n        // all the returned UIDs into a single list.\n        uint256 length = multiRequests.length;\n        bytes32[][] memory totalUIDs = new bytes32[][](length);\n        uint256 totalUIDCount = 0;\n\n        // We are keeping track of the total available ETH amount that can be sent to resolvers and will keep deducting\n        // from it to verify that there isn't any attempt to send too much ETH to resolvers. Please note that unless\n        // some ETH was stuck in the contract by accident (which shouldn't happen in normal conditions), it won't be\n        // possible to send too much ETH anyway.\n        uint256 availableValue = msg.value;\n\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            // The last batch is handled slightly differently: if the total available ETH wasn't spent in full and there\n            // is a remainder - it will be refunded back to the attester (something that we can only verify during the\n            // last and final batch).\n            bool last;\n            unchecked {\n                last = i == length - 1;\n            }\n\n            // Process the current batch of attestations.\n            MultiAttestationRequest calldata multiRequest = multiRequests[i];\n\n            // Ensure that data isn't empty.\n            if (multiRequest.data.length == 0) {\n                revert InvalidLength();\n            }\n\n            AttestationsResult memory res = _attest(\n                multiRequest.schema,\n                multiRequest.data,\n                msg.sender,\n                availableValue,\n                last\n            );\n\n            // Ensure to deduct the ETH that was forwarded to the resolver during the processing of this batch.\n            availableValue -= res.usedValue;\n\n            // Collect UIDs (and merge them later).\n            totalUIDs[i] = res.uids;\n            unchecked {\n                totalUIDCount += res.uids.length;\n            }\n        }\n\n        // Merge all the collected UIDs and return them as a flatten array.\n        return _mergeUIDs(totalUIDs, totalUIDCount);\n    }\n\n    /// @inheritdoc IEAS\n    function multiAttestByDelegation(\n        MultiDelegatedAttestationRequest[] calldata multiDelegatedRequests\n    ) external payable returns (bytes32[] memory) {\n        // Since a multi-attest call is going to make multiple attestations for multiple schemas, we'd need to collect\n        // all the returned UIDs into a single list.\n        uint256 length = multiDelegatedRequests.length;\n        bytes32[][] memory totalUIDs = new bytes32[][](length);\n        uint256 totalUIDCount = 0;\n\n        // We are keeping track of the total available ETH amount that can be sent to resolvers and will keep deducting\n        // from it to verify that there isn't any attempt to send too much ETH to resolvers. Please note that unless\n        // some ETH was stuck in the contract by accident (which shouldn't happen in normal conditions), it won't be\n        // possible to send too much ETH anyway.\n        uint256 availableValue = msg.value;\n\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            // The last batch is handled slightly differently: if the total available ETH wasn't spent in full and there\n            // is a remainder - it will be refunded back to the attester (something that we can only verify during the\n            // last and final batch).\n            bool last;\n            unchecked {\n                last = i == length - 1;\n            }\n\n            MultiDelegatedAttestationRequest calldata multiDelegatedRequest = multiDelegatedRequests[i];\n            AttestationRequestData[] calldata data = multiDelegatedRequest.data;\n\n            // Ensure that no inputs are missing.\n            uint256 dataLength = data.length;\n            if (dataLength == 0 || dataLength != multiDelegatedRequest.signatures.length) {\n                revert InvalidLength();\n            }\n\n            // Verify signatures. Please note that the signatures are assumed to be signed with increasing nonces.\n            for (uint256 j = 0; j < dataLength; j = uncheckedInc(j)) {\n                _verifyAttest(\n                    DelegatedAttestationRequest({\n                        schema: multiDelegatedRequest.schema,\n                        data: data[j],\n                        signature: multiDelegatedRequest.signatures[j],\n                        attester: multiDelegatedRequest.attester,\n                        deadline: multiDelegatedRequest.deadline\n                    })\n                );\n            }\n\n            // Process the current batch of attestations.\n            AttestationsResult memory res = _attest(\n                multiDelegatedRequest.schema,\n                data,\n                multiDelegatedRequest.attester,\n                availableValue,\n                last\n            );\n\n            // Ensure to deduct the ETH that was forwarded to the resolver during the processing of this batch.\n            availableValue -= res.usedValue;\n\n            // Collect UIDs (and merge them later).\n            totalUIDs[i] = res.uids;\n            unchecked {\n                totalUIDCount += res.uids.length;\n            }\n        }\n\n        // Merge all the collected UIDs and return them as a flatten array.\n        return _mergeUIDs(totalUIDs, totalUIDCount);\n    }\n\n    /// @inheritdoc IEAS\n    function revoke(RevocationRequest calldata request) external payable {\n        RevocationRequestData[] memory data = new RevocationRequestData[](1);\n        data[0] = request.data;\n\n        _revoke(request.schema, data, msg.sender, msg.value, true);\n    }\n\n    /// @inheritdoc IEAS\n    function revokeByDelegation(DelegatedRevocationRequest calldata delegatedRequest) external payable {\n        _verifyRevoke(delegatedRequest);\n\n        RevocationRequestData[] memory data = new RevocationRequestData[](1);\n        data[0] = delegatedRequest.data;\n\n        _revoke(delegatedRequest.schema, data, delegatedRequest.revoker, msg.value, true);\n    }\n\n    /// @inheritdoc IEAS\n    function multiRevoke(MultiRevocationRequest[] calldata multiRequests) external payable {\n        // We are keeping track of the total available ETH amount that can be sent to resolvers and will keep deducting\n        // from it to verify that there isn't any attempt to send too much ETH to resolvers. Please note that unless\n        // some ETH was stuck in the contract by accident (which shouldn't happen in normal conditions), it won't be\n        // possible to send too much ETH anyway.\n        uint256 availableValue = msg.value;\n\n        uint256 length = multiRequests.length;\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            // The last batch is handled slightly differently: if the total available ETH wasn't spent in full and there\n            // is a remainder - it will be refunded back to the attester (something that we can only verify during the\n            // last and final batch).\n            bool last;\n            unchecked {\n                last = i == length - 1;\n            }\n\n            MultiRevocationRequest calldata multiRequest = multiRequests[i];\n\n            // Ensure to deduct the ETH that was forwarded to the resolver during the processing of this batch.\n            availableValue -= _revoke(multiRequest.schema, multiRequest.data, msg.sender, availableValue, last);\n        }\n    }\n\n    /// @inheritdoc IEAS\n    function multiRevokeByDelegation(\n        MultiDelegatedRevocationRequest[] calldata multiDelegatedRequests\n    ) external payable {\n        // We are keeping track of the total available ETH amount that can be sent to resolvers and will keep deducting\n        // from it to verify that there isn't any attempt to send too much ETH to resolvers. Please note that unless\n        // some ETH was stuck in the contract by accident (which shouldn't happen in normal conditions), it won't be\n        // possible to send too much ETH anyway.\n        uint256 availableValue = msg.value;\n\n        uint256 length = multiDelegatedRequests.length;\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            // The last batch is handled slightly differently: if the total available ETH wasn't spent in full and there\n            // is a remainder - it will be refunded back to the attester (something that we can only verify during the\n            // last and final batch).\n            bool last;\n            unchecked {\n                last = i == length - 1;\n            }\n\n            MultiDelegatedRevocationRequest memory multiDelegatedRequest = multiDelegatedRequests[i];\n            RevocationRequestData[] memory data = multiDelegatedRequest.data;\n\n            // Ensure that no inputs are missing.\n            uint256 dataLength = data.length;\n            if (dataLength == 0 || dataLength != multiDelegatedRequest.signatures.length) {\n                revert InvalidLength();\n            }\n\n            // Verify signatures. Please note that the signatures are assumed to be signed with increasing nonces.\n            for (uint256 j = 0; j < dataLength; j = uncheckedInc(j)) {\n                _verifyRevoke(\n                    DelegatedRevocationRequest({\n                        schema: multiDelegatedRequest.schema,\n                        data: data[j],\n                        signature: multiDelegatedRequest.signatures[j],\n                        revoker: multiDelegatedRequest.revoker,\n                        deadline: multiDelegatedRequest.deadline\n                    })\n                );\n            }\n\n            // Ensure to deduct the ETH that was forwarded to the resolver during the processing of this batch.\n            availableValue -= _revoke(\n                multiDelegatedRequest.schema,\n                data,\n                multiDelegatedRequest.revoker,\n                availableValue,\n                last\n            );\n        }\n    }\n\n    /// @inheritdoc IEAS\n    function timestamp(bytes32 data) external returns (uint64) {\n        uint64 time = _time();\n\n        _timestamp(data, time);\n\n        return time;\n    }\n\n    /// @inheritdoc IEAS\n    function revokeOffchain(bytes32 data) external returns (uint64) {\n        uint64 time = _time();\n\n        _revokeOffchain(msg.sender, data, time);\n\n        return time;\n    }\n\n    /// @inheritdoc IEAS\n    function multiRevokeOffchain(bytes32[] calldata data) external returns (uint64) {\n        uint64 time = _time();\n\n        uint256 length = data.length;\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            _revokeOffchain(msg.sender, data[i], time);\n        }\n\n        return time;\n    }\n\n    /// @inheritdoc IEAS\n    function multiTimestamp(bytes32[] calldata data) external returns (uint64) {\n        uint64 time = _time();\n\n        uint256 length = data.length;\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            _timestamp(data[i], time);\n        }\n\n        return time;\n    }\n\n    /// @inheritdoc IEAS\n    function getAttestation(bytes32 uid) external view returns (Attestation memory) {\n        return _db[uid];\n    }\n\n    /// @inheritdoc IEAS\n    function isAttestationValid(bytes32 uid) public view returns (bool) {\n        return _db[uid].uid != EMPTY_UID;\n    }\n\n    /// @inheritdoc IEAS\n    function getTimestamp(bytes32 data) external view returns (uint64) {\n        return _timestamps[data];\n    }\n\n    /// @inheritdoc IEAS\n    function getRevokeOffchain(address revoker, bytes32 data) external view returns (uint64) {\n        return _revocationsOffchain[revoker][data];\n    }\n\n    /// @dev Attests to a specific schema.\n    /// @param schemaUID The unique identifier of the schema to attest to.\n    /// @param data The arguments of the attestation requests.\n    /// @param attester The attesting account.\n    /// @param availableValue The total available ETH amount that can be sent to the resolver.\n    /// @param last Whether this is the last attestations/revocations set.\n    /// @return The UID of the new attestations and the total sent ETH amount.\n    function _attest(\n        bytes32 schemaUID,\n        AttestationRequestData[] memory data,\n        address attester,\n        uint256 availableValue,\n        bool last\n    ) private returns (AttestationsResult memory) {\n        uint256 length = data.length;\n\n        AttestationsResult memory res;\n        res.uids = new bytes32[](length);\n\n        // Ensure that we aren't attempting to attest to a non-existing schema.\n        SchemaRecord memory schemaRecord = _schemaRegistry.getSchema(schemaUID);\n        if (schemaRecord.uid == EMPTY_UID) {\n            revert InvalidSchema();\n        }\n\n        Attestation[] memory attestations = new Attestation[](length);\n        uint256[] memory values = new uint256[](length);\n\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            AttestationRequestData memory request = data[i];\n\n            // Ensure that either no expiration time was set or that it was set in the future.\n            if (request.expirationTime != NO_EXPIRATION_TIME && request.expirationTime <= _time()) {\n                revert InvalidExpirationTime();\n            }\n\n            // Ensure that we aren't trying to make a revocable attestation for a non-revocable schema.\n            if (!schemaRecord.revocable && request.revocable) {\n                revert Irrevocable();\n            }\n\n            Attestation memory attestation = Attestation({\n                uid: EMPTY_UID,\n                schema: schemaUID,\n                refUID: request.refUID,\n                time: _time(),\n                expirationTime: request.expirationTime,\n                revocationTime: 0,\n                recipient: request.recipient,\n                attester: attester,\n                revocable: request.revocable,\n                data: request.data\n            });\n\n            // Look for the first non-existing UID (and use a bump seed/nonce in the rare case of a conflict).\n            bytes32 uid;\n            uint32 bump = 0;\n            while (true) {\n                uid = _getUID(attestation, bump);\n                if (_db[uid].uid == EMPTY_UID) {\n                    break;\n                }\n\n                unchecked {\n                    ++bump;\n                }\n            }\n            attestation.uid = uid;\n\n            _db[uid] = attestation;\n\n            if (request.refUID != EMPTY_UID) {\n                // Ensure that we aren't trying to attest to a non-existing referenced UID.\n                if (!isAttestationValid(request.refUID)) {\n                    revert NotFound();\n                }\n            }\n\n            attestations[i] = attestation;\n            values[i] = request.value;\n\n            res.uids[i] = uid;\n\n            emit Attested(request.recipient, attester, uid, schemaUID);\n        }\n\n        res.usedValue = _resolveAttestations(schemaRecord, attestations, values, false, availableValue, last);\n\n        return res;\n    }\n\n    /// @dev Revokes an existing attestation to a specific schema.\n    /// @param schemaUID The unique identifier of the schema to attest to.\n    /// @param data The arguments of the revocation requests.\n    /// @param revoker The revoking account.\n    /// @param availableValue The total available ETH amount that can be sent to the resolver.\n    /// @param last Whether this is the last attestations/revocations set.\n    /// @return Returns the total sent ETH amount.\n    function _revoke(\n        bytes32 schemaUID,\n        RevocationRequestData[] memory data,\n        address revoker,\n        uint256 availableValue,\n        bool last\n    ) private returns (uint256) {\n        // Ensure that a non-existing schema ID wasn't passed by accident.\n        SchemaRecord memory schemaRecord = _schemaRegistry.getSchema(schemaUID);\n        if (schemaRecord.uid == EMPTY_UID) {\n            revert InvalidSchema();\n        }\n\n        uint256 length = data.length;\n        Attestation[] memory attestations = new Attestation[](length);\n        uint256[] memory values = new uint256[](length);\n\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            RevocationRequestData memory request = data[i];\n\n            Attestation storage attestation = _db[request.uid];\n\n            // Ensure that we aren't attempting to revoke a non-existing attestation.\n            if (attestation.uid == EMPTY_UID) {\n                revert NotFound();\n            }\n\n            // Ensure that a wrong schema ID wasn't passed by accident.\n            if (attestation.schema != schemaUID) {\n                revert InvalidSchema();\n            }\n\n            // Allow only original attesters to revoke their attestations.\n            if (attestation.attester != revoker) {\n                revert AccessDenied();\n            }\n\n            // Please note that also checking of the schema itself is revocable is unnecessary, since it's not possible to\n            // make revocable attestations to an irrevocable schema.\n            if (!attestation.revocable) {\n                revert Irrevocable();\n            }\n\n            // Ensure that we aren't trying to revoke the same attestation twice.\n            if (attestation.revocationTime != 0) {\n                revert AlreadyRevoked();\n            }\n            attestation.revocationTime = _time();\n\n            attestations[i] = attestation;\n            values[i] = request.value;\n\n            emit Revoked(attestations[i].recipient, revoker, request.uid, schemaUID);\n        }\n\n        return _resolveAttestations(schemaRecord, attestations, values, true, availableValue, last);\n    }\n\n    /// @dev Resolves a new attestation or a revocation of an existing attestation.\n    /// @param schemaRecord The schema of the attestation.\n    /// @param attestation The data of the attestation to make/revoke.\n    /// @param value An explicit ETH amount to send to the resolver.\n    /// @param isRevocation Whether to resolve an attestation or its revocation.\n    /// @param availableValue The total available ETH amount that can be sent to the resolver.\n    /// @param last Whether this is the last attestations/revocations set.\n    /// @return Returns the total sent ETH amount.\n    function _resolveAttestation(\n        SchemaRecord memory schemaRecord,\n        Attestation memory attestation,\n        uint256 value,\n        bool isRevocation,\n        uint256 availableValue,\n        bool last\n    ) private returns (uint256) {\n        ISchemaResolver resolver = schemaRecord.resolver;\n        if (address(resolver) == address(0)) {\n            // Ensure that we don't accept payments if there is no resolver.\n            if (value != 0) {\n                revert NotPayable();\n            }\n\n            if (last) {\n                _refund(availableValue);\n            }\n\n            return 0;\n        }\n\n        // Ensure that we don't accept payments which can't be forwarded to the resolver.\n        if (value != 0) {\n            if (!resolver.isPayable()) {\n                revert NotPayable();\n            }\n\n            // Ensure that the attester/revoker doesn't try to spend more than available.\n            if (value > availableValue) {\n                revert InsufficientValue();\n            }\n\n            // Ensure to deduct the sent value explicitly.\n            unchecked {\n                availableValue -= value;\n            }\n        }\n\n        if (isRevocation) {\n            if (!resolver.revoke{ value: value }(attestation)) {\n                revert InvalidRevocation();\n            }\n        } else if (!resolver.attest{ value: value }(attestation)) {\n            revert InvalidAttestation();\n        }\n\n        if (last) {\n            _refund(availableValue);\n        }\n\n        return value;\n    }\n\n    /// @dev Resolves multiple attestations or revocations of existing attestations.\n    /// @param schemaRecord The schema of the attestation.\n    /// @param attestations The data of the attestations to make/revoke.\n    /// @param values Explicit ETH amounts to send to the resolver.\n    /// @param isRevocation Whether to resolve an attestation or its revocation.\n    /// @param availableValue The total available ETH amount that can be sent to the resolver.\n    /// @param last Whether this is the last attestations/revocations set.\n    /// @return Returns the total sent ETH amount.\n    function _resolveAttestations(\n        SchemaRecord memory schemaRecord,\n        Attestation[] memory attestations,\n        uint256[] memory values,\n        bool isRevocation,\n        uint256 availableValue,\n        bool last\n    ) private returns (uint256) {\n        uint256 length = attestations.length;\n        if (length == 1) {\n            return _resolveAttestation(schemaRecord, attestations[0], values[0], isRevocation, availableValue, last);\n        }\n\n        ISchemaResolver resolver = schemaRecord.resolver;\n        if (address(resolver) == address(0)) {\n            // Ensure that we don't accept payments if there is no resolver.\n            for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n                if (values[i] != 0) {\n                    revert NotPayable();\n                }\n            }\n\n            if (last) {\n                _refund(availableValue);\n            }\n\n            return 0;\n        }\n\n        uint256 totalUsedValue = 0;\n        bool isResolverPayable = resolver.isPayable();\n\n        for (uint256 i = 0; i < length; i = uncheckedInc(i)) {\n            uint256 value = values[i];\n\n            // Ensure that we don't accept payments which can't be forwarded to the resolver.\n            if (value == 0) {\n                continue;\n            }\n\n            if (!isResolverPayable) {\n                revert NotPayable();\n            }\n\n            // Ensure that the attester/revoker doesn't try to spend more than available.\n            if (value > availableValue) {\n                revert InsufficientValue();\n            }\n\n            // Ensure to deduct the sent value explicitly and add it to the total used value by the batch.\n            unchecked {\n                availableValue -= value;\n                totalUsedValue += value;\n            }\n        }\n\n        if (isRevocation) {\n            if (!resolver.multiRevoke{ value: totalUsedValue }(attestations, values)) {\n                revert InvalidRevocations();\n            }\n        } else if (!resolver.multiAttest{ value: totalUsedValue }(attestations, values)) {\n            revert InvalidAttestations();\n        }\n\n        if (last) {\n            _refund(availableValue);\n        }\n\n        return totalUsedValue;\n    }\n\n    /// @dev Calculates a UID for a given attestation.\n    /// @param attestation The input attestation.\n    /// @param bump A bump value to use in case of a UID conflict.\n    /// @return Attestation UID.\n    function _getUID(Attestation memory attestation, uint32 bump) private pure returns (bytes32) {\n        return\n            keccak256(\n                abi.encodePacked(\n                    attestation.schema,\n                    attestation.recipient,\n                    attestation.attester,\n                    attestation.time,\n                    attestation.expirationTime,\n                    attestation.revocable,\n                    attestation.refUID,\n                    attestation.data,\n                    bump\n                )\n            );\n    }\n\n    /// @dev Refunds remaining ETH amount to the attester.\n    /// @param remainingValue The remaining ETH amount that was not sent to the resolver.\n    function _refund(uint256 remainingValue) private {\n        if (remainingValue > 0) {\n            // Using a regular transfer here might revert, for some non-EOA attesters, due to exceeding of the 2300\n            // gas limit which is why we're using call instead (via sendValue), which the 2300 gas limit does not\n            // apply for.\n            payable(msg.sender).sendValue(remainingValue);\n        }\n    }\n\n    /// @dev Timestamps the specified bytes32 data.\n    /// @param data The data to timestamp.\n    /// @param time The timestamp.\n    function _timestamp(bytes32 data, uint64 time) private {\n        if (_timestamps[data] != 0) {\n            revert AlreadyTimestamped();\n        }\n\n        _timestamps[data] = time;\n\n        emit Timestamped(data, time);\n    }\n\n    /// @dev Revokes the specified bytes32 data.\n    /// @param revoker The revoking account.\n    /// @param data The data to revoke.\n    /// @param time The timestamp the data was revoked with.\n    function _revokeOffchain(address revoker, bytes32 data, uint64 time) private {\n        mapping(bytes32 data => uint64 timestamp) storage revocations = _revocationsOffchain[revoker];\n\n        if (revocations[data] != 0) {\n            revert AlreadyRevokedOffchain();\n        }\n\n        revocations[data] = time;\n\n        emit RevokedOffchain(revoker, data, time);\n    }\n\n    /// @dev Merges lists of UIDs.\n    /// @param uidLists The provided lists of UIDs.\n    /// @param uidCount Total UID count.\n    /// @return A merged and flatten list of all the UIDs.\n    function _mergeUIDs(bytes32[][] memory uidLists, uint256 uidCount) private pure returns (bytes32[] memory) {\n        bytes32[] memory uids = new bytes32[](uidCount);\n\n        uint256 currentIndex = 0;\n        uint256 uidListLength = uidLists.length;\n        for (uint256 i = 0; i < uidListLength; i = uncheckedInc(i)) {\n            bytes32[] memory currentUIDs = uidLists[i];\n            uint256 currentUIDsLength = currentUIDs.length;\n            for (uint256 j = 0; j < currentUIDsLength; j = uncheckedInc(j)) {\n                uids[currentIndex] = currentUIDs[j];\n\n                unchecked {\n                    ++currentIndex;\n                }\n            }\n        }\n\n        return uids;\n    }\n}\n"
      },
      "@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.27;\n\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { EIP712 } from \"@openzeppelin/contracts/utils/cryptography/EIP712.sol\";\nimport { SignatureChecker } from \"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\";\nimport { DeadlineExpired, NO_EXPIRATION_TIME, Signature, InvalidSignature } from \"./../Common.sol\";\n\n// prettier-ignore\nimport {\n    AttestationRequestData,\n    DelegatedAttestationRequest,\n    DelegatedRevocationRequest,\n    RevocationRequestData\n} from \"../IEAS.sol\";\n\n/// @title EIP1271Verifier\n/// @notice EIP1271Verifier typed signatures verifier for EAS delegated attestations.\nabstract contract EIP1271Verifier is EIP712 {\n    using Address for address;\n\n    error InvalidNonce();\n\n    // The hash of the data type used to relay calls to the attest function. It's the value of\n    // keccak256(\"Attest(address attester,bytes32 schema,address recipient,uint64 expirationTime,bool revocable,bytes32 refUID,bytes data,uint256 value,uint256 nonce,uint64 deadline)\").\n    bytes32 private constant ATTEST_TYPEHASH = 0xfeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d988076;\n\n    // The hash of the data type used to relay calls to the revoke function. It's the value of\n    // keccak256(\"Revoke(address revoker,bytes32 schema,bytes32 uid,uint256 value,uint256 nonce,uint64 deadline)\").\n    bytes32 private constant REVOKE_TYPEHASH = 0xb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75;\n\n    // The user readable name of the signing domain.\n    string private _name;\n\n    // Replay protection nonces.\n    mapping(address attester => uint256 nonce) private _nonces;\n\n    /// @notice Emitted when users invalidate nonces by increasing their nonces to (higher) new values.\n    /// @param oldNonce The previous nonce.\n    /// @param newNonce The new value.\n    event NonceIncreased(uint256 oldNonce, uint256 newNonce);\n\n    /// @dev Creates a new EIP1271Verifier instance.\n    /// @param version The current major version of the signing domain\n    constructor(string memory name, string memory version) EIP712(name, version) {\n        _name = name;\n    }\n\n    /// @notice Returns the domain separator used in the encoding of the signatures for attest, and revoke.\n    /// @return The domain separator used in the encoding of the signatures for attest, and revoke.\n    function getDomainSeparator() external view returns (bytes32) {\n        return _domainSeparatorV4();\n    }\n\n    /// @notice Returns the current nonce per-account.\n    /// @param account The requested account.\n    /// @return The current nonce.\n    function getNonce(address account) external view returns (uint256) {\n        return _nonces[account];\n    }\n\n    /// @notice Returns the EIP712 type hash for the attest function.\n    /// @return The EIP712 type hash for the attest function.\n    function getAttestTypeHash() external pure returns (bytes32) {\n        return ATTEST_TYPEHASH;\n    }\n\n    /// @notice Returns the EIP712 type hash for the revoke function.\n    /// @return The EIP712 type hash for the revoke function.\n    function getRevokeTypeHash() external pure returns (bytes32) {\n        return REVOKE_TYPEHASH;\n    }\n\n    /// @notice Returns the EIP712 name.\n    /// @return The EIP712 name.\n    function getName() external view returns (string memory) {\n        return _name;\n    }\n\n    /// @notice Provides users an option to invalidate nonces by increasing their nonces to (higher) new values.\n    /// @param newNonce The (higher) new value.\n    function increaseNonce(uint256 newNonce) external {\n        uint256 oldNonce = _nonces[msg.sender];\n        if (newNonce <= oldNonce) {\n            revert InvalidNonce();\n        }\n\n        _nonces[msg.sender] = newNonce;\n\n        emit NonceIncreased({ oldNonce: oldNonce, newNonce: newNonce });\n    }\n\n    /// @dev Verifies delegated attestation request.\n    /// @param request The arguments of the delegated attestation request.\n    function _verifyAttest(DelegatedAttestationRequest memory request) internal {\n        if (request.deadline != NO_EXPIRATION_TIME && request.deadline < _time()) {\n            revert DeadlineExpired();\n        }\n\n        AttestationRequestData memory data = request.data;\n        Signature memory signature = request.signature;\n\n        bytes32 hash = _hashTypedDataV4(\n            keccak256(\n                abi.encode(\n                    ATTEST_TYPEHASH,\n                    request.attester,\n                    request.schema,\n                    data.recipient,\n                    data.expirationTime,\n                    data.revocable,\n                    data.refUID,\n                    keccak256(data.data),\n                    data.value,\n                    _nonces[request.attester]++,\n                    request.deadline\n                )\n            )\n        );\n        if (\n            !SignatureChecker.isValidSignatureNow(\n                request.attester,\n                hash,\n                abi.encodePacked(signature.r, signature.s, signature.v)\n            )\n        ) {\n            revert InvalidSignature();\n        }\n    }\n\n    /// @dev Verifies delegated revocation request.\n    /// @param request The arguments of the delegated revocation request.\n    function _verifyRevoke(DelegatedRevocationRequest memory request) internal {\n        if (request.deadline != NO_EXPIRATION_TIME && request.deadline < _time()) {\n            revert DeadlineExpired();\n        }\n\n        RevocationRequestData memory data = request.data;\n        Signature memory signature = request.signature;\n\n        bytes32 hash = _hashTypedDataV4(\n            keccak256(\n                abi.encode(\n                    REVOKE_TYPEHASH,\n                    request.revoker,\n                    request.schema,\n                    data.uid,\n                    data.value,\n                    _nonces[request.revoker]++,\n                    request.deadline\n                )\n            )\n        );\n        if (\n            !SignatureChecker.isValidSignatureNow(\n                request.revoker,\n                hash,\n                abi.encodePacked(signature.r, signature.s, signature.v)\n            )\n        ) {\n            revert InvalidSignature();\n        }\n    }\n\n    /// @dev Returns the current's block timestamp. This method is overridden during tests and used to simulate the\n    ///     current block time.\n    function _time() internal view virtual returns (uint64) {\n        return uint64(block.timestamp);\n    }\n}\n"
      },
      "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport { ISchemaRegistry } from \"./ISchemaRegistry.sol\";\nimport { ISemver } from \"./ISemver.sol\";\nimport { Attestation, Signature } from \"./Common.sol\";\n\n/// @notice A struct representing the arguments of the attestation request.\nstruct AttestationRequestData {\n    address recipient; // The recipient of the attestation.\n    uint64 expirationTime; // The time when the attestation expires (Unix timestamp).\n    bool revocable; // Whether the attestation is revocable.\n    bytes32 refUID; // The UID of the related attestation.\n    bytes data; // Custom attestation data.\n    uint256 value; // An explicit ETH amount to send to the resolver. This is important to prevent accidental user errors.\n}\n\n/// @notice A struct representing the full arguments of the attestation request.\nstruct AttestationRequest {\n    bytes32 schema; // The unique identifier of the schema.\n    AttestationRequestData data; // The arguments of the attestation request.\n}\n\n/// @notice A struct representing the full arguments of the full delegated attestation request.\nstruct DelegatedAttestationRequest {\n    bytes32 schema; // The unique identifier of the schema.\n    AttestationRequestData data; // The arguments of the attestation request.\n    Signature signature; // The ECDSA signature data.\n    address attester; // The attesting account.\n    uint64 deadline; // The deadline of the signature/request.\n}\n\n/// @notice A struct representing the full arguments of the multi attestation request.\nstruct MultiAttestationRequest {\n    bytes32 schema; // The unique identifier of the schema.\n    AttestationRequestData[] data; // The arguments of the attestation request.\n}\n\n/// @notice A struct representing the full arguments of the delegated multi attestation request.\nstruct MultiDelegatedAttestationRequest {\n    bytes32 schema; // The unique identifier of the schema.\n    AttestationRequestData[] data; // The arguments of the attestation requests.\n    Signature[] signatures; // The ECDSA signatures data. Please note that the signatures are assumed to be signed with increasing nonces.\n    address attester; // The attesting account.\n    uint64 deadline; // The deadline of the signature/request.\n}\n\n/// @notice A struct representing the arguments of the revocation request.\nstruct RevocationRequestData {\n    bytes32 uid; // The UID of the attestation to revoke.\n    uint256 value; // An explicit ETH amount to send to the resolver. This is important to prevent accidental user errors.\n}\n\n/// @notice A struct representing the full arguments of the revocation request.\nstruct RevocationRequest {\n    bytes32 schema; // The unique identifier of the schema.\n    RevocationRequestData data; // The arguments of the revocation request.\n}\n\n/// @notice A struct representing the arguments of the full delegated revocation request.\nstruct DelegatedRevocationRequest {\n    bytes32 schema; // The unique identifier of the schema.\n    RevocationRequestData data; // The arguments of the revocation request.\n    Signature signature; // The ECDSA signature data.\n    address revoker; // The revoking account.\n    uint64 deadline; // The deadline of the signature/request.\n}\n\n/// @notice A struct representing the full arguments of the multi revocation request.\nstruct MultiRevocationRequest {\n    bytes32 schema; // The unique identifier of the schema.\n    RevocationRequestData[] data; // The arguments of the revocation request.\n}\n\n/// @notice A struct representing the full arguments of the delegated multi revocation request.\nstruct MultiDelegatedRevocationRequest {\n    bytes32 schema; // The unique identifier of the schema.\n    RevocationRequestData[] data; // The arguments of the revocation requests.\n    Signature[] signatures; // The ECDSA signatures data. Please note that the signatures are assumed to be signed with increasing nonces.\n    address revoker; // The revoking account.\n    uint64 deadline; // The deadline of the signature/request.\n}\n\n/// @title IEAS\n/// @notice EAS - Ethereum Attestation Service interface.\ninterface IEAS is ISemver {\n    /// @notice Emitted when an attestation has been made.\n    /// @param recipient The recipient of the attestation.\n    /// @param attester The attesting account.\n    /// @param uid The UID of the new attestation.\n    /// @param schemaUID The UID of the schema.\n    event Attested(address indexed recipient, address indexed attester, bytes32 uid, bytes32 indexed schemaUID);\n\n    /// @notice Emitted when an attestation has been revoked.\n    /// @param recipient The recipient of the attestation.\n    /// @param attester The attesting account.\n    /// @param schemaUID The UID of the schema.\n    /// @param uid The UID the revoked attestation.\n    event Revoked(address indexed recipient, address indexed attester, bytes32 uid, bytes32 indexed schemaUID);\n\n    /// @notice Emitted when a data has been timestamped.\n    /// @param data The data.\n    /// @param timestamp The timestamp.\n    event Timestamped(bytes32 indexed data, uint64 indexed timestamp);\n\n    /// @notice Emitted when a data has been revoked.\n    /// @param revoker The address of the revoker.\n    /// @param data The data.\n    /// @param timestamp The timestamp.\n    event RevokedOffchain(address indexed revoker, bytes32 indexed data, uint64 indexed timestamp);\n\n    /// @notice Returns the address of the global schema registry.\n    /// @return The address of the global schema registry.\n    function getSchemaRegistry() external view returns (ISchemaRegistry);\n\n    /// @notice Attests to a specific schema.\n    /// @param request The arguments of the attestation request.\n    /// @return The UID of the new attestation.\n    ///\n    /// Example:\n    ///     attest({\n    ///         schema: \"0facc36681cbe2456019c1b0d1e7bedd6d1d40f6f324bf3dd3a4cef2999200a0\",\n    ///         data: {\n    ///             recipient: \"0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf\",\n    ///             expirationTime: 0,\n    ///             revocable: true,\n    ///             refUID: \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n    ///             data: \"0xF00D\",\n    ///             value: 0\n    ///         }\n    ///     })\n    function attest(AttestationRequest calldata request) external payable returns (bytes32);\n\n    /// @notice Attests to a specific schema via the provided ECDSA signature.\n    /// @param delegatedRequest The arguments of the delegated attestation request.\n    /// @return The UID of the new attestation.\n    ///\n    /// Example:\n    ///     attestByDelegation({\n    ///         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n    ///         data: {\n    ///             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',\n    ///             expirationTime: 1673891048,\n    ///             revocable: true,\n    ///             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',\n    ///             data: '0x1234',\n    ///             value: 0\n    ///         },\n    ///         signature: {\n    ///             v: 28,\n    ///             r: '0x148c...b25b',\n    ///             s: '0x5a72...be22'\n    ///         },\n    ///         attester: '0xc5E8740aD971409492b1A63Db8d83025e0Fc427e',\n    ///         deadline: 1673891048\n    ///     })\n    function attestByDelegation(\n        DelegatedAttestationRequest calldata delegatedRequest\n    ) external payable returns (bytes32);\n\n    /// @notice Attests to multiple schemas.\n    /// @param multiRequests The arguments of the multi attestation requests. The requests should be grouped by distinct\n    ///     schema ids to benefit from the best batching optimization.\n    /// @return The UIDs of the new attestations.\n    ///\n    /// Example:\n    ///     multiAttest([{\n    ///         schema: '0x33e9094830a5cba5554d1954310e4fbed2ef5f859ec1404619adea4207f391fd',\n    ///         data: [{\n    ///             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',\n    ///             expirationTime: 1673891048,\n    ///             revocable: true,\n    ///             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',\n    ///             data: '0x1234',\n    ///             value: 1000\n    ///         },\n    ///         {\n    ///             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',\n    ///             expirationTime: 0,\n    ///             revocable: false,\n    ///             refUID: '0x480df4a039efc31b11bfdf491b383ca138b6bde160988222a2a3509c02cee174',\n    ///             data: '0x00',\n    ///             value: 0\n    ///         }],\n    ///     },\n    ///     {\n    ///         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',\n    ///         data: [{\n    ///             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',\n    ///             expirationTime: 0,\n    ///             revocable: true,\n    ///             refUID: '0x75bf2ed8dca25a8190c50c52db136664de25b2449535839008ccfdab469b214f',\n    ///             data: '0x12345678',\n    ///             value: 0\n    ///         },\n    ///     }])\n    function multiAttest(MultiAttestationRequest[] calldata multiRequests) external payable returns (bytes32[] memory);\n\n    /// @notice Attests to multiple schemas using via provided ECDSA signatures.\n    /// @param multiDelegatedRequests The arguments of the delegated multi attestation requests. The requests should be\n    ///     grouped by distinct schema ids to benefit from the best batching optimization.\n    /// @return The UIDs of the new attestations.\n    ///\n    /// Example:\n    ///     multiAttestByDelegation([{\n    ///         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n    ///         data: [{\n    ///             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',\n    ///             expirationTime: 1673891048,\n    ///             revocable: true,\n    ///             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',\n    ///             data: '0x1234',\n    ///             value: 0\n    ///         },\n    ///         {\n    ///             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',\n    ///             expirationTime: 0,\n    ///             revocable: false,\n    ///             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',\n    ///             data: '0x00',\n    ///             value: 0\n    ///         }],\n    ///         signatures: [{\n    ///             v: 28,\n    ///             r: '0x148c...b25b',\n    ///             s: '0x5a72...be22'\n    ///         },\n    ///         {\n    ///             v: 28,\n    ///             r: '0x487s...67bb',\n    ///             s: '0x12ad...2366'\n    ///         }],\n    ///         attester: '0x1D86495b2A7B524D747d2839b3C645Bed32e8CF4',\n    ///         deadline: 1673891048\n    ///     }])\n    function multiAttestByDelegation(\n        MultiDelegatedAttestationRequest[] calldata multiDelegatedRequests\n    ) external payable returns (bytes32[] memory);\n\n    /// @notice Revokes an existing attestation to a specific schema.\n    /// @param request The arguments of the revocation request.\n    ///\n    /// Example:\n    ///     revoke({\n    ///         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n    ///         data: {\n    ///             uid: '0x101032e487642ee04ee17049f99a70590c735b8614079fc9275f9dd57c00966d',\n    ///             value: 0\n    ///         }\n    ///     })\n    function revoke(RevocationRequest calldata request) external payable;\n\n    /// @notice Revokes an existing attestation to a specific schema via the provided ECDSA signature.\n    /// @param delegatedRequest The arguments of the delegated revocation request.\n    ///\n    /// Example:\n    ///     revokeByDelegation({\n    ///         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n    ///         data: {\n    ///             uid: '0xcbbc12102578c642a0f7b34fe7111e41afa25683b6cd7b5a14caf90fa14d24ba',\n    ///             value: 0\n    ///         },\n    ///         signature: {\n    ///             v: 27,\n    ///             r: '0xb593...7142',\n    ///             s: '0x0f5b...2cce'\n    ///         },\n    ///         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',\n    ///         deadline: 1673891048\n    ///     })\n    function revokeByDelegation(DelegatedRevocationRequest calldata delegatedRequest) external payable;\n\n    /// @notice Revokes existing attestations to multiple schemas.\n    /// @param multiRequests The arguments of the multi revocation requests. The requests should be grouped by distinct\n    ///     schema ids to benefit from the best batching optimization.\n    ///\n    /// Example:\n    ///     multiRevoke([{\n    ///         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n    ///         data: [{\n    ///             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',\n    ///             value: 1000\n    ///         },\n    ///         {\n    ///             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',\n    ///             value: 0\n    ///         }],\n    ///     },\n    ///     {\n    ///         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',\n    ///         data: [{\n    ///             uid: '0x053d42abce1fd7c8fcddfae21845ad34dae287b2c326220b03ba241bc5a8f019',\n    ///             value: 0\n    ///         },\n    ///     }])\n    function multiRevoke(MultiRevocationRequest[] calldata multiRequests) external payable;\n\n    /// @notice Revokes existing attestations to multiple schemas via provided ECDSA signatures.\n    /// @param multiDelegatedRequests The arguments of the delegated multi revocation attestation requests. The requests\n    ///     should be grouped by distinct schema ids to benefit from the best batching optimization.\n    ///\n    /// Example:\n    ///     multiRevokeByDelegation([{\n    ///         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n    ///         data: [{\n    ///             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',\n    ///             value: 1000\n    ///         },\n    ///         {\n    ///             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',\n    ///             value: 0\n    ///         }],\n    ///         signatures: [{\n    ///             v: 28,\n    ///             r: '0x148c...b25b',\n    ///             s: '0x5a72...be22'\n    ///         },\n    ///         {\n    ///             v: 28,\n    ///             r: '0x487s...67bb',\n    ///             s: '0x12ad...2366'\n    ///         }],\n    ///         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',\n    ///         deadline: 1673891048\n    ///     }])\n    function multiRevokeByDelegation(\n        MultiDelegatedRevocationRequest[] calldata multiDelegatedRequests\n    ) external payable;\n\n    /// @notice Timestamps the specified bytes32 data.\n    /// @param data The data to timestamp.\n    /// @return The timestamp the data was timestamped with.\n    function timestamp(bytes32 data) external returns (uint64);\n\n    /// @notice Timestamps the specified multiple bytes32 data.\n    /// @param data The data to timestamp.\n    /// @return The timestamp the data was timestamped with.\n    function multiTimestamp(bytes32[] calldata data) external returns (uint64);\n\n    /// @notice Revokes the specified bytes32 data.\n    /// @param data The data to timestamp.\n    /// @return The timestamp the data was revoked with.\n    function revokeOffchain(bytes32 data) external returns (uint64);\n\n    /// @notice Revokes the specified multiple bytes32 data.\n    /// @param data The data to timestamp.\n    /// @return The timestamp the data was revoked with.\n    function multiRevokeOffchain(bytes32[] calldata data) external returns (uint64);\n\n    /// @notice Returns an existing attestation by UID.\n    /// @param uid The UID of the attestation to retrieve.\n    /// @return The attestation data members.\n    function getAttestation(bytes32 uid) external view returns (Attestation memory);\n\n    /// @notice Checks whether an attestation exists.\n    /// @param uid The UID of the attestation to retrieve.\n    /// @return Whether an attestation exists.\n    function isAttestationValid(bytes32 uid) external view returns (bool);\n\n    /// @notice Returns the timestamp that the specified data was timestamped with.\n    /// @param data The data to query.\n    /// @return The timestamp the data was timestamped with.\n    function getTimestamp(bytes32 data) external view returns (uint64);\n\n    /// @notice Returns the timestamp that the specified data was timestamped with.\n    /// @param data The data to query.\n    /// @return The timestamp the data was timestamped with.\n    function getRevokeOffchain(address revoker, bytes32 data) external view returns (uint64);\n}\n"
      },
      "@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport { ISemver } from \"./ISemver.sol\";\n\nimport { ISchemaResolver } from \"./resolver/ISchemaResolver.sol\";\n\n/// @notice A struct representing a record for a submitted schema.\nstruct SchemaRecord {\n    bytes32 uid; // The unique identifier of the schema.\n    ISchemaResolver resolver; // Optional schema resolver.\n    bool revocable; // Whether the schema allows revocations explicitly.\n    string schema; // Custom specification of the schema (e.g., an ABI).\n}\n\n/// @title ISchemaRegistry\n/// @notice The interface of global attestation schemas for the Ethereum Attestation Service protocol.\ninterface ISchemaRegistry is ISemver {\n    /// @notice Emitted when a new schema has been registered\n    /// @param uid The schema UID.\n    /// @param registerer The address of the account used to register the schema.\n    /// @param schema The schema data.\n    event Registered(bytes32 indexed uid, address indexed registerer, SchemaRecord schema);\n\n    /// @notice Submits and reserves a new schema\n    /// @param schema The schema data schema.\n    /// @param resolver An optional schema resolver.\n    /// @param revocable Whether the schema allows revocations explicitly.\n    /// @return The UID of the new schema.\n    function register(string calldata schema, ISchemaResolver resolver, bool revocable) external returns (bytes32);\n\n    /// @notice Returns an existing schema by UID\n    /// @param uid The UID of the schema to retrieve.\n    /// @return The schema data members.\n    function getSchema(bytes32 uid) external view returns (SchemaRecord memory);\n}\n"
      },
      "@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @title ISemver\n/// @notice A semver interface.\ninterface ISemver {\n    /// @notice Returns the full semver contract version.\n    /// @return Semver contract version as a string.\n    function version() external view returns (string memory);\n}\n"
      },
      "@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport { Attestation } from \"./../Common.sol\";\nimport { ISemver } from \"./../ISemver.sol\";\n\n/// @title ISchemaResolver\n/// @notice The interface of an optional schema resolver.\ninterface ISchemaResolver is ISemver {\n    /// @notice Checks if the resolver can be sent ETH.\n    /// @return Whether the resolver supports ETH transfers.\n    function isPayable() external pure returns (bool);\n\n    /// @notice Processes an attestation and verifies whether it's valid.\n    /// @param attestation The new attestation.\n    /// @return Whether the attestation is valid.\n    function attest(Attestation calldata attestation) external payable returns (bool);\n\n    /// @notice Processes multiple attestations and verifies whether they are valid.\n    /// @param attestations The new attestations.\n    /// @param values Explicit ETH amounts which were sent with each attestation.\n    /// @return Whether all the attestations are valid.\n    function multiAttest(\n        Attestation[] calldata attestations,\n        uint256[] calldata values\n    ) external payable returns (bool);\n\n    /// @notice Processes an attestation revocation and verifies if it can be revoked.\n    /// @param attestation The existing attestation to be revoked.\n    /// @return Whether the attestation can be revoked.\n    function revoke(Attestation calldata attestation) external payable returns (bool);\n\n    /// @notice Processes revocation of multiple attestation and verifies they can be revoked.\n    /// @param attestations The existing attestations to be revoked.\n    /// @param values Explicit ETH amounts which were sent with each revocation.\n    /// @return Whether the attestations can be revoked.\n    function multiRevoke(\n        Attestation[] calldata attestations,\n        uint256[] calldata values\n    ) external payable returns (bool);\n}\n"
      },
      "@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity 0.8.27;\n\nimport { ISchemaResolver } from \"./resolver/ISchemaResolver.sol\";\n\nimport { EMPTY_UID } from \"./Common.sol\";\nimport { Semver } from \"./Semver.sol\";\nimport { ISchemaRegistry, SchemaRecord } from \"./ISchemaRegistry.sol\";\n\n/// @title SchemaRegistry\n/// @notice The global schema registry.\ncontract SchemaRegistry is ISchemaRegistry, Semver {\n    error AlreadyExists();\n\n    // The global mapping between schema records and their IDs.\n    mapping(bytes32 uid => SchemaRecord schemaRecord) private _registry;\n\n    /// @dev Creates a new SchemaRegistry instance.\n    constructor() Semver(1, 3, 0) {}\n\n    /// @inheritdoc ISchemaRegistry\n    function register(string calldata schema, ISchemaResolver resolver, bool revocable) external returns (bytes32) {\n        SchemaRecord memory schemaRecord = SchemaRecord({\n            uid: EMPTY_UID,\n            schema: schema,\n            resolver: resolver,\n            revocable: revocable\n        });\n\n        bytes32 uid = _getUID(schemaRecord);\n        if (_registry[uid].uid != EMPTY_UID) {\n            revert AlreadyExists();\n        }\n\n        schemaRecord.uid = uid;\n        _registry[uid] = schemaRecord;\n\n        emit Registered(uid, msg.sender, schemaRecord);\n\n        return uid;\n    }\n\n    /// @inheritdoc ISchemaRegistry\n    function getSchema(bytes32 uid) external view returns (SchemaRecord memory) {\n        return _registry[uid];\n    }\n\n    /// @dev Calculates a UID for a given schema.\n    /// @param schemaRecord The input schema.\n    /// @return schema UID.\n    function _getUID(SchemaRecord memory schemaRecord) private pure returns (bytes32) {\n        return keccak256(abi.encodePacked(schemaRecord.schema, schemaRecord.resolver, schemaRecord.revocable));\n    }\n}\n"
      },
      "@ethereum-attestation-service/eas-contracts/contracts/Semver.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.4;\n\nimport { Strings } from \"@openzeppelin/contracts/utils/Strings.sol\";\n\nimport { ISemver } from \"./ISemver.sol\";\n\n/// @title Semver\n/// @notice A simple contract for managing contract versions.\ncontract Semver is ISemver {\n    // Contract's major version number.\n    uint256 private immutable _major;\n\n    // Contract's minor version number.\n    uint256 private immutable _minor;\n\n    // Contract's patch version number.\n    uint256 private immutable _patch;\n\n    /// @dev Create a new Semver instance.\n    /// @param major Major version number.\n    /// @param minor Minor version number.\n    /// @param patch Patch version number.\n    constructor(uint256 major, uint256 minor, uint256 patch) {\n        _major = major;\n        _minor = minor;\n        _patch = patch;\n    }\n\n    /// @notice Returns the full semver contract version.\n    /// @return Semver contract version as a string.\n    function version() external view returns (string memory) {\n        return\n            string(\n                abi.encodePacked(Strings.toString(_major), \".\", Strings.toString(_minor), \".\", Strings.toString(_patch))\n            );\n    }\n}\n"
      },
      "@openzeppelin/contracts/interfaces/IERC1271.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC1271.sol)\n\npragma solidity >=0.5.0;\n\n/**\n * @dev Interface of the ERC-1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n */\ninterface IERC1271 {\n    /**\n     * @dev Should return whether the signature provided is valid for the provided data\n     * @param hash      Hash of the data to be signed\n     * @param signature Signature byte array associated with `hash`\n     */\n    function isValidSignature(bytes32 hash, bytes calldata signature) external view returns (bytes4 magicValue);\n}\n"
      },
      "@openzeppelin/contracts/interfaces/IERC5267.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC5267.sol)\n\npragma solidity >=0.4.16;\n\ninterface IERC5267 {\n    /**\n     * @dev MAY be emitted to signal that the domain could have changed.\n     */\n    event EIP712DomainChanged();\n\n    /**\n     * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n     * signature.\n     */\n    function eip712Domain()\n        external\n        view\n        returns (\n            bytes1 fields,\n            string memory name,\n            string memory version,\n            uint256 chainId,\n            address verifyingContract,\n            bytes32 salt,\n            uint256[] memory extensions\n        );\n}\n"
      },
      "@openzeppelin/contracts/interfaces/IERC7913.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/IERC7913.sol)\n\npragma solidity >=0.5.0;\n\n/**\n * @dev Signature verifier interface.\n */\ninterface IERC7913SignatureVerifier {\n    /**\n     * @dev Verifies `signature` as a valid signature of `hash` by `key`.\n     *\n     * MUST return the bytes4 magic value IERC7913SignatureVerifier.verify.selector if the signature is valid.\n     * SHOULD return 0xffffffff or revert if the signature is not valid.\n     * SHOULD return 0xffffffff or revert if the key is empty\n     */\n    function verify(bytes calldata key, bytes32 hash, bytes calldata signature) external view returns (bytes4);\n}\n"
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev There's no code at `target` (it is not a contract).\n     */\n    error AddressEmptyCode(address target);\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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        if (address(this).balance < amount) {\n            revert Errors.InsufficientBalance(address(this).balance, amount);\n        }\n\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\"\");\n        if (!success) {\n            _revert(returndata);\n        }\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 or custom error, it is bubbled\n     * up by this function (like regular Solidity function calls). However, if\n     * the call reverted with no returned reason, this function reverts with a\n     * {Errors.FailedCall} error.\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    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0);\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    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        if (address(this).balance < value) {\n            revert Errors.InsufficientBalance(address(this).balance, value);\n        }\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n     * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n     * of an unsuccessful call.\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata\n    ) internal view returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            // only check if target is a contract if the call was successful and the return data is empty\n            // otherwise we already know that it was a contract\n            if (returndata.length == 0 && target.code.length == 0) {\n                revert AddressEmptyCode(target);\n            }\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n     * revert reason or with a default {Errors.FailedCall} error.\n     */\n    function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n     */\n    function _revert(bytes memory returndata) private pure {\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            assembly (\"memory-safe\") {\n                revert(add(returndata, 0x20), mload(returndata))\n            }\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Bytes.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Bytes.sol)\n\npragma solidity ^0.8.24;\n\nimport {Math} from \"./math/Math.sol\";\n\n/**\n * @dev Bytes operations.\n */\nlibrary Bytes {\n    /**\n     * @dev Forward search for `s` in `buffer`\n     * * If `s` is present in the buffer, returns the index of the first instance\n     * * If `s` is not present in the buffer, returns type(uint256).max\n     *\n     * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]\n     */\n    function indexOf(bytes memory buffer, bytes1 s) internal pure returns (uint256) {\n        return indexOf(buffer, s, 0);\n    }\n\n    /**\n     * @dev Forward search for `s` in `buffer` starting at position `pos`\n     * * If `s` is present in the buffer (at or after `pos`), returns the index of the next instance\n     * * If `s` is not present in the buffer (at or after `pos`), returns type(uint256).max\n     *\n     * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]\n     */\n    function indexOf(bytes memory buffer, bytes1 s, uint256 pos) internal pure returns (uint256) {\n        uint256 length = buffer.length;\n        for (uint256 i = pos; i < length; ++i) {\n            if (bytes1(_unsafeReadBytesOffset(buffer, i)) == s) {\n                return i;\n            }\n        }\n        return type(uint256).max;\n    }\n\n    /**\n     * @dev Backward search for `s` in `buffer`\n     * * If `s` is present in the buffer, returns the index of the last instance\n     * * If `s` is not present in the buffer, returns type(uint256).max\n     *\n     * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]\n     */\n    function lastIndexOf(bytes memory buffer, bytes1 s) internal pure returns (uint256) {\n        return lastIndexOf(buffer, s, type(uint256).max);\n    }\n\n    /**\n     * @dev Backward search for `s` in `buffer` starting at position `pos`\n     * * If `s` is present in the buffer (at or before `pos`), returns the index of the previous instance\n     * * If `s` is not present in the buffer (at or before `pos`), returns type(uint256).max\n     *\n     * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]\n     */\n    function lastIndexOf(bytes memory buffer, bytes1 s, uint256 pos) internal pure returns (uint256) {\n        unchecked {\n            uint256 length = buffer.length;\n            for (uint256 i = Math.min(Math.saturatingAdd(pos, 1), length); i > 0; --i) {\n                if (bytes1(_unsafeReadBytesOffset(buffer, i - 1)) == s) {\n                    return i - 1;\n                }\n            }\n            return type(uint256).max;\n        }\n    }\n\n    /**\n     * @dev Copies the content of `buffer`, from `start` (included) to the end of `buffer` into a new bytes object in\n     * memory.\n     *\n     * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]\n     */\n    function slice(bytes memory buffer, uint256 start) internal pure returns (bytes memory) {\n        return slice(buffer, start, buffer.length);\n    }\n\n    /**\n     * @dev Copies the content of `buffer`, from `start` (included) to `end` (excluded) into a new bytes object in\n     * memory.\n     *\n     * NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]\n     */\n    function slice(bytes memory buffer, uint256 start, uint256 end) internal pure returns (bytes memory) {\n        // sanitize\n        uint256 length = buffer.length;\n        end = Math.min(end, length);\n        start = Math.min(start, end);\n\n        // allocate and copy\n        bytes memory result = new bytes(end - start);\n        assembly (\"memory-safe\") {\n            mcopy(add(result, 0x20), add(add(buffer, 0x20), start), sub(end, start))\n        }\n\n        return result;\n    }\n\n    /**\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\n     *\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n     * assembly block as such would prevent some optimizations.\n     */\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\n        assembly (\"memory-safe\") {\n            value := mload(add(add(buffer, 0x20), offset))\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n    enum RecoverError {\n        NoError,\n        InvalidSignature,\n        InvalidSignatureLength,\n        InvalidSignatureS\n    }\n\n    /**\n     * @dev The signature derives the `address(0)`.\n     */\n    error ECDSAInvalidSignature();\n\n    /**\n     * @dev The signature has an invalid length.\n     */\n    error ECDSAInvalidSignatureLength(uint256 length);\n\n    /**\n     * @dev The signature has an S value that is in the upper half order.\n     */\n    error ECDSAInvalidSignatureS(bytes32 s);\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n     * and a bytes32 providing additional information about the error.\n     *\n     * If no error is returned, then the address can be used for verification purposes.\n     *\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n     *\n     * Documentation for signature generation:\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes memory signature\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        if (signature.length == 65) {\n            bytes32 r;\n            bytes32 s;\n            uint8 v;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            assembly (\"memory-safe\") {\n                r := mload(add(signature, 0x20))\n                s := mload(add(signature, 0x40))\n                v := byte(0, mload(add(signature, 0x60)))\n            }\n            return tryRecover(hash, v, r, s);\n        } else {\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature`. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n     */\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n     *\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes32 r,\n        bytes32 vs\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        unchecked {\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\n            return tryRecover(hash, v, r, s);\n        }\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n     */\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function tryRecover(\n        bytes32 hash,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n        //\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n        // these malleable signatures as well.\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n            return (address(0), RecoverError.InvalidSignatureS, s);\n        }\n\n        // If the signature is valid (and not malleable), return the signer address\n        address signer = ecrecover(hash, v, r, s);\n        if (signer == address(0)) {\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\n        }\n\n        return (signer, RecoverError.NoError, bytes32(0));\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n     */\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\n        if (error == RecoverError.NoError) {\n            return; // no error: do nothing\n        } else if (error == RecoverError.InvalidSignature) {\n            revert ECDSAInvalidSignature();\n        } else if (error == RecoverError.InvalidSignatureLength) {\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\n        } else if (error == RecoverError.InvalidSignatureS) {\n            revert ECDSAInvalidSignatureS(errorArg);\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/cryptography/EIP712.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.20;\n\nimport {MessageHashUtils} from \"./MessageHashUtils.sol\";\nimport {ShortStrings, ShortString} from \"../ShortStrings.sol\";\nimport {IERC5267} from \"../../interfaces/IERC5267.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n *\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable\n */\nabstract contract EIP712 is IERC5267 {\n    using ShortStrings for *;\n\n    bytes32 private constant TYPE_HASH =\n        keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n    // invalidate the cached domain separator if the chain id changes.\n    bytes32 private immutable _cachedDomainSeparator;\n    uint256 private immutable _cachedChainId;\n    address private immutable _cachedThis;\n\n    bytes32 private immutable _hashedName;\n    bytes32 private immutable _hashedVersion;\n\n    ShortString private immutable _name;\n    ShortString private immutable _version;\n    // slither-disable-next-line constable-states\n    string private _nameFallback;\n    // slither-disable-next-line constable-states\n    string private _versionFallback;\n\n    /**\n     * @dev Initializes the domain separator and parameter caches.\n     *\n     * The meaning of `name` and `version` is specified in\n     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]:\n     *\n     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n     * - `version`: the current major version of the signing domain.\n     *\n     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n     * contract upgrade].\n     */\n    constructor(string memory name, string memory version) {\n        _name = name.toShortStringWithFallback(_nameFallback);\n        _version = version.toShortStringWithFallback(_versionFallback);\n        _hashedName = keccak256(bytes(name));\n        _hashedVersion = keccak256(bytes(version));\n\n        _cachedChainId = block.chainid;\n        _cachedDomainSeparator = _buildDomainSeparator();\n        _cachedThis = address(this);\n    }\n\n    /**\n     * @dev Returns the domain separator for the current chain.\n     */\n    function _domainSeparatorV4() internal view returns (bytes32) {\n        if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\n            return _cachedDomainSeparator;\n        } else {\n            return _buildDomainSeparator();\n        }\n    }\n\n    function _buildDomainSeparator() private view returns (bytes32) {\n        return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\n    }\n\n    /**\n     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n     * function returns the hash of the fully encoded EIP712 message for this domain.\n     *\n     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n     *\n     * ```solidity\n     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     *     keccak256(\"Mail(address to,string contents)\"),\n     *     mailTo,\n     *     keccak256(bytes(mailContents))\n     * )));\n     * address signer = ECDSA.recover(digest, signature);\n     * ```\n     */\n    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n        return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\n    }\n\n    /// @inheritdoc IERC5267\n    function eip712Domain()\n        public\n        view\n        virtual\n        returns (\n            bytes1 fields,\n            string memory name,\n            string memory version,\n            uint256 chainId,\n            address verifyingContract,\n            bytes32 salt,\n            uint256[] memory extensions\n        )\n    {\n        return (\n            hex\"0f\", // 01111\n            _EIP712Name(),\n            _EIP712Version(),\n            block.chainid,\n            address(this),\n            bytes32(0),\n            new uint256[](0)\n        );\n    }\n\n    /**\n     * @dev The name parameter for the EIP712 domain.\n     *\n     * NOTE: By default this function reads _name which is an immutable value.\n     * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function _EIP712Name() internal view returns (string memory) {\n        return _name.toStringWithFallback(_nameFallback);\n    }\n\n    /**\n     * @dev The version parameter for the EIP712 domain.\n     *\n     * NOTE: By default this function reads _version which is an immutable value.\n     * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function _EIP712Version() internal view returns (string memory) {\n        return _version.toStringWithFallback(_versionFallback);\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/cryptography/MessageHashUtils.sol)\n\npragma solidity ^0.8.20;\n\nimport {Strings} from \"../Strings.sol\";\n\n/**\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n *\n * The library provides methods for generating a hash of a message that conforms to the\n * https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n * specifications.\n */\nlibrary MessageHashUtils {\n    /**\n     * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n     * `0x45` (`personal_sign` messages).\n     *\n     * The digest is calculated by prefixing a bytes32 `messageHash` with\n     * `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n     * hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n     *\n     * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n     * keccak256, although any bytes32 value can be safely used because the final digest will\n     * be re-hashed.\n     *\n     * See {ECDSA-recover}.\n     */\n    function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\n        assembly (\"memory-safe\") {\n            mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\") // 32 is the bytes-length of messageHash\n            mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\n            digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\n        }\n    }\n\n    /**\n     * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n     * `0x45` (`personal_sign` messages).\n     *\n     * The digest is calculated by prefixing an arbitrary `message` with\n     * `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n     * hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n     *\n     * See {ECDSA-recover}.\n     */\n    function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\n        return\n            keccak256(bytes.concat(\"\\x19Ethereum Signed Message:\\n\", bytes(Strings.toString(message.length)), message));\n    }\n\n    /**\n     * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n     * `0x00` (data with intended validator).\n     *\n     * The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n     * `validator` address. Then hashing the result.\n     *\n     * See {ECDSA-recover}.\n     */\n    function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(hex\"19_00\", validator, data));\n    }\n\n    /**\n     * @dev Variant of {toDataWithIntendedValidatorHash-address-bytes} optimized for cases where `data` is a bytes32.\n     */\n    function toDataWithIntendedValidatorHash(\n        address validator,\n        bytes32 messageHash\n    ) internal pure returns (bytes32 digest) {\n        assembly (\"memory-safe\") {\n            mstore(0x00, hex\"19_00\")\n            mstore(0x02, shl(96, validator))\n            mstore(0x16, messageHash)\n            digest := keccak256(0x00, 0x36)\n        }\n    }\n\n    /**\n     * @dev Returns the keccak256 digest of an EIP-712 typed data (ERC-191 version `0x01`).\n     *\n     * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n     * `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n     *\n     * See {ECDSA-recover}.\n     */\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\n        assembly (\"memory-safe\") {\n            let ptr := mload(0x40)\n            mstore(ptr, hex\"19_01\")\n            mstore(add(ptr, 0x02), domainSeparator)\n            mstore(add(ptr, 0x22), structHash)\n            digest := keccak256(ptr, 0x42)\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/cryptography/SignatureChecker.sol)\n\npragma solidity ^0.8.24;\n\nimport {ECDSA} from \"./ECDSA.sol\";\nimport {IERC1271} from \"../../interfaces/IERC1271.sol\";\nimport {IERC7913SignatureVerifier} from \"../../interfaces/IERC7913.sol\";\nimport {Bytes} from \"../../utils/Bytes.sol\";\n\n/**\n * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support:\n *\n * * ECDSA signatures from externally owned accounts (EOAs)\n * * ERC-1271 signatures from smart contract wallets like Argent and Safe Wallet (previously Gnosis Safe)\n * * ERC-7913 signatures from keys that do not have an Ethereum address of their own\n *\n * See https://eips.ethereum.org/EIPS/eip-1271[ERC-1271] and https://eips.ethereum.org/EIPS/eip-7913[ERC-7913].\n */\nlibrary SignatureChecker {\n    using Bytes for bytes;\n\n    /**\n     * @dev Checks if a signature is valid for a given signer and data hash. If the signer has code, the\n     * signature is validated against it using ERC-1271, otherwise it's validated using `ECDSA.recover`.\n     *\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\n     *\n     * NOTE: For an extended version of this function that supports ERC-7913 signatures, see {isValidSignatureNow-bytes-bytes32-bytes-}.\n     */\n    function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) internal view returns (bool) {\n        if (signer.code.length == 0) {\n            (address recovered, ECDSA.RecoverError err, ) = ECDSA.tryRecover(hash, signature);\n            return err == ECDSA.RecoverError.NoError && recovered == signer;\n        } else {\n            return isValidERC1271SignatureNow(signer, hash, signature);\n        }\n    }\n\n    /**\n     * @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\n     * against the signer smart contract using ERC-1271.\n     *\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\n     */\n    function isValidERC1271SignatureNow(\n        address signer,\n        bytes32 hash,\n        bytes memory signature\n    ) internal view returns (bool) {\n        (bool success, bytes memory result) = signer.staticcall(\n            abi.encodeCall(IERC1271.isValidSignature, (hash, signature))\n        );\n        return (success &&\n            result.length >= 32 &&\n            abi.decode(result, (bytes32)) == bytes32(IERC1271.isValidSignature.selector));\n    }\n\n    /**\n     * @dev Verifies a signature for a given ERC-7913 signer and hash.\n     *\n     * The signer is a `bytes` object that is the concatenation of an address and optionally a key:\n     * `verifier || key`. A signer must be at least 20 bytes long.\n     *\n     * Verification is done as follows:\n     *\n     * * If `signer.length < 20`: verification fails\n     * * If `signer.length == 20`: verification is done using {isValidSignatureNow}\n     * * Otherwise: verification is done using {IERC7913SignatureVerifier}\n     *\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\n     */\n    function isValidSignatureNow(\n        bytes memory signer,\n        bytes32 hash,\n        bytes memory signature\n    ) internal view returns (bool) {\n        if (signer.length < 20) {\n            return false;\n        } else if (signer.length == 20) {\n            return isValidSignatureNow(address(bytes20(signer)), hash, signature);\n        } else {\n            (bool success, bytes memory result) = address(bytes20(signer)).staticcall(\n                abi.encodeCall(IERC7913SignatureVerifier.verify, (signer.slice(20), hash, signature))\n            );\n            return (success &&\n                result.length >= 32 &&\n                abi.decode(result, (bytes32)) == bytes32(IERC7913SignatureVerifier.verify.selector));\n        }\n    }\n\n    /**\n     * @dev Verifies multiple ERC-7913 `signatures` for a given `hash` using a set of `signers`.\n     * Returns `false` if the number of signers and signatures is not the same.\n     *\n     * The signers should be ordered by their `keccak256` hash to ensure efficient duplication check. Unordered\n     * signers are supported, but the uniqueness check will be more expensive.\n     *\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\n     */\n    function areValidSignaturesNow(\n        bytes32 hash,\n        bytes[] memory signers,\n        bytes[] memory signatures\n    ) internal view returns (bool) {\n        if (signers.length != signatures.length) return false;\n\n        bytes32 lastId = bytes32(0);\n\n        for (uint256 i = 0; i < signers.length; ++i) {\n            bytes memory signer = signers[i];\n\n            // If one of the signatures is invalid, reject the batch\n            if (!isValidSignatureNow(signer, hash, signatures[i])) return false;\n\n            bytes32 id = keccak256(signer);\n            // If the current signer ID is greater than all previous IDs, then this is a new signer.\n            if (lastId < id) {\n                lastId = id;\n            } else {\n                // If this signer id is not greater than all the previous ones, verify that it is not a duplicate of a previous one\n                // This loop is never executed if the signers are ordered by id.\n                for (uint256 j = 0; j < i; ++j) {\n                    if (id == keccak256(signers[j])) return false;\n                }\n            }\n        }\n\n        return true;\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Errors.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n    /**\n     * @dev The ETH balance of the account is not enough to perform the operation.\n     */\n    error InsufficientBalance(uint256 balance, uint256 needed);\n\n    /**\n     * @dev A call to an address target failed. The target may have reverted.\n     */\n    error FailedCall();\n\n    /**\n     * @dev The deployment failed.\n     */\n    error FailedDeployment();\n\n    /**\n     * @dev A necessary precompile is missing.\n     */\n    error MissingPrecompile(address);\n}\n"
      },
      "@openzeppelin/contracts/utils/math/Math.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Floor, // Toward negative infinity\n        Ceil, // Toward positive infinity\n        Trunc, // Toward zero\n        Expand // Away from zero\n    }\n\n    /**\n     * @dev Return the 512-bit addition of two uint256.\n     *\n     * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low.\n     */\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        assembly (\"memory-safe\") {\n            low := add(a, b)\n            high := lt(low, a)\n        }\n    }\n\n    /**\n     * @dev Return the 512-bit multiplication of two uint256.\n     *\n     * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low.\n     */\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n        // variables such that product = high * 2²⁵⁶ + low.\n        assembly (\"memory-safe\") {\n            let mm := mulmod(a, b, not(0))\n            low := mul(a, b)\n            high := sub(sub(mm, low), lt(mm, low))\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a + b;\n            success = c >= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a - b;\n            success = c <= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a * b;\n            assembly (\"memory-safe\") {\n                // Only true when the multiplication doesn't overflow\n                // (c / a == b) || (a == 0)\n                success := or(eq(div(c, a), b), iszero(a))\n            }\n            // equivalent to: success ? c : 0\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `DIV` opcode returns zero when the denominator is 0.\n                result := div(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `MOD` opcode returns zero when the denominator is 0.\n                result := mod(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryAdd(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\n     */\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\n        (, uint256 result) = trySub(a, b);\n        return result;\n    }\n\n    /**\n     * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryMul(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds towards infinity instead\n     * of rounding towards zero.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        if (b == 0) {\n            // Guarantee the same behavior as in a regular Solidity division.\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n\n        // The following calculation ensures accurate ceiling division without overflow.\n        // Since a is non-zero, (a - 1) / b will not overflow.\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\n        // when a = type(uint256).max and b = 1.\n        unchecked {\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n        }\n    }\n\n    /**\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n     * denominator == 0.\n     *\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n     * Uniswap Labs also under MIT license.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (high == 0) {\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n                // The surrounding unchecked block does not change this fact.\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n                return low / denominator;\n            }\n\n            // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n            if (denominator <= high) {\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n            }\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [high low].\n            uint256 remainder;\n            assembly (\"memory-safe\") {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                high := sub(high, gt(remainder, low))\n                low := sub(low, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n            uint256 twos = denominator & (0 - denominator);\n            assembly (\"memory-safe\") {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [high low] by twos.\n                low := div(low, twos)\n\n                // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from high into low.\n            low |= high * twos;\n\n            // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n            // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n            // works in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n            inverse *= 2 - denominator * inverse; // inverse mod 2³²\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is\n            // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high\n            // is no longer required.\n            result = low * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n    }\n\n    /**\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n            if (high >= 1 << n) {\n                Panic.panic(Panic.UNDER_OVERFLOW);\n            }\n            return (high << (256 - n)) | (low >> n);\n        }\n    }\n\n    /**\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\n    }\n\n    /**\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n     *\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n     *\n     * If the input value is not inversible, 0 is returned.\n     *\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n     */\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n        unchecked {\n            if (n == 0) return 0;\n\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n            // ax + ny = 1\n            // ax = 1 + (-y)n\n            // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n            // If the remainder is 0 the gcd is n right away.\n            uint256 remainder = a % n;\n            uint256 gcd = n;\n\n            // Therefore the initial coefficients are:\n            // ax + ny = gcd(a, n) = n\n            // 0a + 1n = n\n            int256 x = 0;\n            int256 y = 1;\n\n            while (remainder != 0) {\n                uint256 quotient = gcd / remainder;\n\n                (gcd, remainder) = (\n                    // The old remainder is the next gcd to try.\n                    remainder,\n                    // Compute the next remainder.\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n                    // where gcd is at most n (capped to type(uint256).max)\n                    gcd - remainder * quotient\n                );\n\n                (x, y) = (\n                    // Increment the coefficient of a.\n                    y,\n                    // Decrement the coefficient of n.\n                    // Can overflow, but the result is casted to uint256 so that the\n                    // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n                    x - y * int256(quotient)\n                );\n            }\n\n            if (gcd != 1) return 0; // No inverse exists.\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n        }\n    }\n\n    /**\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n     *\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n     * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n     *\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n     */\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n        unchecked {\n            return Math.modExp(a, p - 2, p);\n        }\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n     *\n     * Requirements:\n     * - modulus can't be zero\n     * - underlying staticcall to precompile must succeed\n     *\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n     * interpreted as 0.\n     */\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n        (bool success, uint256 result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n     * to operate modulo 0 or if the underlying precompile reverted.\n     *\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n     * of a revert, but the result may be incorrectly interpreted as 0.\n     */\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n        if (m == 0) return (false, 0);\n        assembly (\"memory-safe\") {\n            let ptr := mload(0x40)\n            // | Offset    | Content    | Content (Hex)                                                      |\n            // |-----------|------------|--------------------------------------------------------------------|\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n            mstore(ptr, 0x20)\n            mstore(add(ptr, 0x20), 0x20)\n            mstore(add(ptr, 0x40), 0x20)\n            mstore(add(ptr, 0x60), b)\n            mstore(add(ptr, 0x80), e)\n            mstore(add(ptr, 0xa0), m)\n\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\n            // so we can use the memory scratch space located at offset 0.\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n            result := mload(0x00)\n        }\n    }\n\n    /**\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\n     */\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n        (bool success, bytes memory result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n     */\n    function tryModExp(\n        bytes memory b,\n        bytes memory e,\n        bytes memory m\n    ) internal view returns (bool success, bytes memory result) {\n        if (_zeroBytes(m)) return (false, new bytes(0));\n\n        uint256 mLen = m.length;\n\n        // Encode call args in result and move the free memory pointer\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n        assembly (\"memory-safe\") {\n            let dataPtr := add(result, 0x20)\n            // Write result on top of args to avoid allocating extra memory.\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n            // Overwrite the length.\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n            mstore(result, mLen)\n            // Set the memory pointer after the returned data.\n            mstore(0x40, add(dataPtr, mLen))\n        }\n    }\n\n    /**\n     * @dev Returns whether the provided byte array is zero.\n     */\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n        for (uint256 i = 0; i < byteArray.length; ++i) {\n            if (byteArray[i] != 0) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    /**\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n     * towards zero.\n     *\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n     * using integer operations.\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        unchecked {\n            // Take care of easy edge cases when a == 0 or a == 1\n            if (a <= 1) {\n                return a;\n            }\n\n            // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n            // the current value as `ε_n = | x_n - sqrt(a) |`.\n            //\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n            // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n            // bigger than any uint256.\n            //\n            // By noticing that\n            // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n            // to the msb function.\n            uint256 aa = a;\n            uint256 xn = 1;\n\n            if (aa >= (1 << 128)) {\n                aa >>= 128;\n                xn <<= 64;\n            }\n            if (aa >= (1 << 64)) {\n                aa >>= 64;\n                xn <<= 32;\n            }\n            if (aa >= (1 << 32)) {\n                aa >>= 32;\n                xn <<= 16;\n            }\n            if (aa >= (1 << 16)) {\n                aa >>= 16;\n                xn <<= 8;\n            }\n            if (aa >= (1 << 8)) {\n                aa >>= 8;\n                xn <<= 4;\n            }\n            if (aa >= (1 << 4)) {\n                aa >>= 4;\n                xn <<= 2;\n            }\n            if (aa >= (1 << 2)) {\n                xn <<= 1;\n            }\n\n            // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n            //\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n            // This is going to be our x_0 (and ε_0)\n            xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n            // From here, Newton's method give us:\n            // x_{n+1} = (x_n + a / x_n) / 2\n            //\n            // One should note that:\n            // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n            //              = ((x_n² + a) / (2 * x_n))² - a\n            //              = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n            //              = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n            //              = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n            //              = (x_n² - a)² / (2 * x_n)²\n            //              = ((x_n² - a) / (2 * x_n))²\n            //              ≥ 0\n            // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n            //\n            // This gives us the proof of quadratic convergence of the sequence:\n            // ε_{n+1} = | x_{n+1} - sqrt(a) |\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\n            //         = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n            //         = | (x_n - sqrt(a))² / (2 * x_n) |\n            //         = | ε_n² / (2 * x_n) |\n            //         = ε_n² / | (2 * x_n) |\n            //\n            // For the first iteration, we have a special case where x_0 is known:\n            // ε_1 = ε_0² / | (2 * x_0) |\n            //     ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n            //     ≤ 2**(2*e-4) / (3 * 2**(e-1))\n            //     ≤ 2**(e-3) / 3\n            //     ≤ 2**(e-3-log2(3))\n            //     ≤ 2**(e-4.5)\n            //\n            // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n            // ε_{n+1} = ε_n² / | (2 * x_n) |\n            //         ≤ (2**(e-k))² / (2 * 2**(e-1))\n            //         ≤ 2**(2*e-2*k) / 2**e\n            //         ≤ 2**(e-2*k)\n            xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5)  -- special case, see above\n            xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9)    -- general case with k = 4.5\n            xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18)   -- general case with k = 9\n            xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36)   -- general case with k = 18\n            xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72)   -- general case with k = 36\n            xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144)  -- general case with k = 72\n\n            // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n            // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n            // sqrt(a) or sqrt(a) + 1.\n            return xn - SafeCast.toUint(xn > a / xn);\n        }\n    }\n\n    /**\n     * @dev Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = sqrt(a);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // If upper 8 bits of 16-bit half set, add 8 to result\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\n        // If upper 4 bits of 8-bit half set, add 4 to result\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\n\n        // Shifts value right by the current result and use it as an index into this lookup table:\n        //\n        // | x (4 bits) |  index  | table[index] = MSB position |\n        // |------------|---------|-----------------------------|\n        // |    0000    |    0    |        table[0] = 0         |\n        // |    0001    |    1    |        table[1] = 0         |\n        // |    0010    |    2    |        table[2] = 1         |\n        // |    0011    |    3    |        table[3] = 1         |\n        // |    0100    |    4    |        table[4] = 2         |\n        // |    0101    |    5    |        table[5] = 2         |\n        // |    0110    |    6    |        table[6] = 2         |\n        // |    0111    |    7    |        table[7] = 2         |\n        // |    1000    |    8    |        table[8] = 3         |\n        // |    1001    |    9    |        table[9] = 3         |\n        // |    1010    |   10    |        table[10] = 3        |\n        // |    1011    |   11    |        table[11] = 3        |\n        // |    1100    |   12    |        table[12] = 3        |\n        // |    1101    |   13    |        table[13] = 3        |\n        // |    1110    |   14    |        table[14] = 3        |\n        // |    1111    |   15    |        table[15] = 3        |\n        //\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\n        assembly (\"memory-safe\") {\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log2(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >= 10 ** 64) {\n                value /= 10 ** 64;\n                result += 64;\n            }\n            if (value >= 10 ** 32) {\n                value /= 10 ** 32;\n                result += 32;\n            }\n            if (value >= 10 ** 16) {\n                value /= 10 ** 16;\n                result += 16;\n            }\n            if (value >= 10 ** 8) {\n                value /= 10 ** 8;\n                result += 8;\n            }\n            if (value >= 10 ** 4) {\n                value /= 10 ** 4;\n                result += 4;\n            }\n            if (value >= 10 ** 2) {\n                value /= 10 ** 2;\n                result += 2;\n            }\n            if (value >= 10 ** 1) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log10(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     *\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n     */\n    function log256(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\n    }\n\n    /**\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log256(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n        }\n    }\n\n    /**\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n     */\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n        return uint8(rounding) % 2 == 1;\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/math/SafeCast.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n    /**\n     * @dev Value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n    /**\n     * @dev An int value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedIntToUint(int256 value);\n\n    /**\n     * @dev Value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n    /**\n     * @dev An uint value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedUintToInt(uint256 value);\n\n    /**\n     * @dev Returns the downcasted uint248 from uint256, reverting on\n     * overflow (when the input is greater than largest uint248).\n     *\n     * Counterpart to Solidity's `uint248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toUint248(uint256 value) internal pure returns (uint248) {\n        if (value > type(uint248).max) {\n            revert SafeCastOverflowedUintDowncast(248, value);\n        }\n        return uint248(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint240 from uint256, reverting on\n     * overflow (when the input is greater than largest uint240).\n     *\n     * Counterpart to Solidity's `uint240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toUint240(uint256 value) internal pure returns (uint240) {\n        if (value > type(uint240).max) {\n            revert SafeCastOverflowedUintDowncast(240, value);\n        }\n        return uint240(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint232 from uint256, reverting on\n     * overflow (when the input is greater than largest uint232).\n     *\n     * Counterpart to Solidity's `uint232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toUint232(uint256 value) internal pure returns (uint232) {\n        if (value > type(uint232).max) {\n            revert SafeCastOverflowedUintDowncast(232, value);\n        }\n        return uint232(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint224 from uint256, reverting on\n     * overflow (when the input is greater than largest uint224).\n     *\n     * Counterpart to Solidity's `uint224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toUint224(uint256 value) internal pure returns (uint224) {\n        if (value > type(uint224).max) {\n            revert SafeCastOverflowedUintDowncast(224, value);\n        }\n        return uint224(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint216 from uint256, reverting on\n     * overflow (when the input is greater than largest uint216).\n     *\n     * Counterpart to Solidity's `uint216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toUint216(uint256 value) internal pure returns (uint216) {\n        if (value > type(uint216).max) {\n            revert SafeCastOverflowedUintDowncast(216, value);\n        }\n        return uint216(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint208 from uint256, reverting on\n     * overflow (when the input is greater than largest uint208).\n     *\n     * Counterpart to Solidity's `uint208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toUint208(uint256 value) internal pure returns (uint208) {\n        if (value > type(uint208).max) {\n            revert SafeCastOverflowedUintDowncast(208, value);\n        }\n        return uint208(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint200 from uint256, reverting on\n     * overflow (when the input is greater than largest uint200).\n     *\n     * Counterpart to Solidity's `uint200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toUint200(uint256 value) internal pure returns (uint200) {\n        if (value > type(uint200).max) {\n            revert SafeCastOverflowedUintDowncast(200, value);\n        }\n        return uint200(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint192 from uint256, reverting on\n     * overflow (when the input is greater than largest uint192).\n     *\n     * Counterpart to Solidity's `uint192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toUint192(uint256 value) internal pure returns (uint192) {\n        if (value > type(uint192).max) {\n            revert SafeCastOverflowedUintDowncast(192, value);\n        }\n        return uint192(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint184 from uint256, reverting on\n     * overflow (when the input is greater than largest uint184).\n     *\n     * Counterpart to Solidity's `uint184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toUint184(uint256 value) internal pure returns (uint184) {\n        if (value > type(uint184).max) {\n            revert SafeCastOverflowedUintDowncast(184, value);\n        }\n        return uint184(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint176 from uint256, reverting on\n     * overflow (when the input is greater than largest uint176).\n     *\n     * Counterpart to Solidity's `uint176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toUint176(uint256 value) internal pure returns (uint176) {\n        if (value > type(uint176).max) {\n            revert SafeCastOverflowedUintDowncast(176, value);\n        }\n        return uint176(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint168 from uint256, reverting on\n     * overflow (when the input is greater than largest uint168).\n     *\n     * Counterpart to Solidity's `uint168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toUint168(uint256 value) internal pure returns (uint168) {\n        if (value > type(uint168).max) {\n            revert SafeCastOverflowedUintDowncast(168, value);\n        }\n        return uint168(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint160 from uint256, reverting on\n     * overflow (when the input is greater than largest uint160).\n     *\n     * Counterpart to Solidity's `uint160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toUint160(uint256 value) internal pure returns (uint160) {\n        if (value > type(uint160).max) {\n            revert SafeCastOverflowedUintDowncast(160, value);\n        }\n        return uint160(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint152 from uint256, reverting on\n     * overflow (when the input is greater than largest uint152).\n     *\n     * Counterpart to Solidity's `uint152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toUint152(uint256 value) internal pure returns (uint152) {\n        if (value > type(uint152).max) {\n            revert SafeCastOverflowedUintDowncast(152, value);\n        }\n        return uint152(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint144 from uint256, reverting on\n     * overflow (when the input is greater than largest uint144).\n     *\n     * Counterpart to Solidity's `uint144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toUint144(uint256 value) internal pure returns (uint144) {\n        if (value > type(uint144).max) {\n            revert SafeCastOverflowedUintDowncast(144, value);\n        }\n        return uint144(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint136 from uint256, reverting on\n     * overflow (when the input is greater than largest uint136).\n     *\n     * Counterpart to Solidity's `uint136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toUint136(uint256 value) internal pure returns (uint136) {\n        if (value > type(uint136).max) {\n            revert SafeCastOverflowedUintDowncast(136, value);\n        }\n        return uint136(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint128 from uint256, reverting on\n     * overflow (when the input is greater than largest uint128).\n     *\n     * Counterpart to Solidity's `uint128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toUint128(uint256 value) internal pure returns (uint128) {\n        if (value > type(uint128).max) {\n            revert SafeCastOverflowedUintDowncast(128, value);\n        }\n        return uint128(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint120 from uint256, reverting on\n     * overflow (when the input is greater than largest uint120).\n     *\n     * Counterpart to Solidity's `uint120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toUint120(uint256 value) internal pure returns (uint120) {\n        if (value > type(uint120).max) {\n            revert SafeCastOverflowedUintDowncast(120, value);\n        }\n        return uint120(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint112 from uint256, reverting on\n     * overflow (when the input is greater than largest uint112).\n     *\n     * Counterpart to Solidity's `uint112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toUint112(uint256 value) internal pure returns (uint112) {\n        if (value > type(uint112).max) {\n            revert SafeCastOverflowedUintDowncast(112, value);\n        }\n        return uint112(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint104 from uint256, reverting on\n     * overflow (when the input is greater than largest uint104).\n     *\n     * Counterpart to Solidity's `uint104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toUint104(uint256 value) internal pure returns (uint104) {\n        if (value > type(uint104).max) {\n            revert SafeCastOverflowedUintDowncast(104, value);\n        }\n        return uint104(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint96 from uint256, reverting on\n     * overflow (when the input is greater than largest uint96).\n     *\n     * Counterpart to Solidity's `uint96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toUint96(uint256 value) internal pure returns (uint96) {\n        if (value > type(uint96).max) {\n            revert SafeCastOverflowedUintDowncast(96, value);\n        }\n        return uint96(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint88 from uint256, reverting on\n     * overflow (when the input is greater than largest uint88).\n     *\n     * Counterpart to Solidity's `uint88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toUint88(uint256 value) internal pure returns (uint88) {\n        if (value > type(uint88).max) {\n            revert SafeCastOverflowedUintDowncast(88, value);\n        }\n        return uint88(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint80 from uint256, reverting on\n     * overflow (when the input is greater than largest uint80).\n     *\n     * Counterpart to Solidity's `uint80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toUint80(uint256 value) internal pure returns (uint80) {\n        if (value > type(uint80).max) {\n            revert SafeCastOverflowedUintDowncast(80, value);\n        }\n        return uint80(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint72 from uint256, reverting on\n     * overflow (when the input is greater than largest uint72).\n     *\n     * Counterpart to Solidity's `uint72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toUint72(uint256 value) internal pure returns (uint72) {\n        if (value > type(uint72).max) {\n            revert SafeCastOverflowedUintDowncast(72, value);\n        }\n        return uint72(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint64 from uint256, reverting on\n     * overflow (when the input is greater than largest uint64).\n     *\n     * Counterpart to Solidity's `uint64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toUint64(uint256 value) internal pure returns (uint64) {\n        if (value > type(uint64).max) {\n            revert SafeCastOverflowedUintDowncast(64, value);\n        }\n        return uint64(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint56 from uint256, reverting on\n     * overflow (when the input is greater than largest uint56).\n     *\n     * Counterpart to Solidity's `uint56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toUint56(uint256 value) internal pure returns (uint56) {\n        if (value > type(uint56).max) {\n            revert SafeCastOverflowedUintDowncast(56, value);\n        }\n        return uint56(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint48 from uint256, reverting on\n     * overflow (when the input is greater than largest uint48).\n     *\n     * Counterpart to Solidity's `uint48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toUint48(uint256 value) internal pure returns (uint48) {\n        if (value > type(uint48).max) {\n            revert SafeCastOverflowedUintDowncast(48, value);\n        }\n        return uint48(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint40 from uint256, reverting on\n     * overflow (when the input is greater than largest uint40).\n     *\n     * Counterpart to Solidity's `uint40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toUint40(uint256 value) internal pure returns (uint40) {\n        if (value > type(uint40).max) {\n            revert SafeCastOverflowedUintDowncast(40, value);\n        }\n        return uint40(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint32 from uint256, reverting on\n     * overflow (when the input is greater than largest uint32).\n     *\n     * Counterpart to Solidity's `uint32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toUint32(uint256 value) internal pure returns (uint32) {\n        if (value > type(uint32).max) {\n            revert SafeCastOverflowedUintDowncast(32, value);\n        }\n        return uint32(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint24 from uint256, reverting on\n     * overflow (when the input is greater than largest uint24).\n     *\n     * Counterpart to Solidity's `uint24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toUint24(uint256 value) internal pure returns (uint24) {\n        if (value > type(uint24).max) {\n            revert SafeCastOverflowedUintDowncast(24, value);\n        }\n        return uint24(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint16 from uint256, reverting on\n     * overflow (when the input is greater than largest uint16).\n     *\n     * Counterpart to Solidity's `uint16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toUint16(uint256 value) internal pure returns (uint16) {\n        if (value > type(uint16).max) {\n            revert SafeCastOverflowedUintDowncast(16, value);\n        }\n        return uint16(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint8 from uint256, reverting on\n     * overflow (when the input is greater than largest uint8).\n     *\n     * Counterpart to Solidity's `uint8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toUint8(uint256 value) internal pure returns (uint8) {\n        if (value > type(uint8).max) {\n            revert SafeCastOverflowedUintDowncast(8, value);\n        }\n        return uint8(value);\n    }\n\n    /**\n     * @dev Converts a signed int256 into an unsigned uint256.\n     *\n     * Requirements:\n     *\n     * - input must be greater than or equal to 0.\n     */\n    function toUint256(int256 value) internal pure returns (uint256) {\n        if (value < 0) {\n            revert SafeCastOverflowedIntToUint(value);\n        }\n        return uint256(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int248 from int256, reverting on\n     * overflow (when the input is less than smallest int248 or\n     * greater than largest int248).\n     *\n     * Counterpart to Solidity's `int248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\n        downcasted = int248(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(248, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int240 from int256, reverting on\n     * overflow (when the input is less than smallest int240 or\n     * greater than largest int240).\n     *\n     * Counterpart to Solidity's `int240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\n        downcasted = int240(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(240, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int232 from int256, reverting on\n     * overflow (when the input is less than smallest int232 or\n     * greater than largest int232).\n     *\n     * Counterpart to Solidity's `int232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\n        downcasted = int232(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(232, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int224 from int256, reverting on\n     * overflow (when the input is less than smallest int224 or\n     * greater than largest int224).\n     *\n     * Counterpart to Solidity's `int224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\n        downcasted = int224(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(224, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int216 from int256, reverting on\n     * overflow (when the input is less than smallest int216 or\n     * greater than largest int216).\n     *\n     * Counterpart to Solidity's `int216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\n        downcasted = int216(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(216, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int208 from int256, reverting on\n     * overflow (when the input is less than smallest int208 or\n     * greater than largest int208).\n     *\n     * Counterpart to Solidity's `int208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\n        downcasted = int208(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(208, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int200 from int256, reverting on\n     * overflow (when the input is less than smallest int200 or\n     * greater than largest int200).\n     *\n     * Counterpart to Solidity's `int200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\n        downcasted = int200(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(200, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int192 from int256, reverting on\n     * overflow (when the input is less than smallest int192 or\n     * greater than largest int192).\n     *\n     * Counterpart to Solidity's `int192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\n        downcasted = int192(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(192, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int184 from int256, reverting on\n     * overflow (when the input is less than smallest int184 or\n     * greater than largest int184).\n     *\n     * Counterpart to Solidity's `int184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\n        downcasted = int184(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(184, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int176 from int256, reverting on\n     * overflow (when the input is less than smallest int176 or\n     * greater than largest int176).\n     *\n     * Counterpart to Solidity's `int176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\n        downcasted = int176(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(176, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int168 from int256, reverting on\n     * overflow (when the input is less than smallest int168 or\n     * greater than largest int168).\n     *\n     * Counterpart to Solidity's `int168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\n        downcasted = int168(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(168, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int160 from int256, reverting on\n     * overflow (when the input is less than smallest int160 or\n     * greater than largest int160).\n     *\n     * Counterpart to Solidity's `int160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\n        downcasted = int160(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(160, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int152 from int256, reverting on\n     * overflow (when the input is less than smallest int152 or\n     * greater than largest int152).\n     *\n     * Counterpart to Solidity's `int152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\n        downcasted = int152(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(152, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int144 from int256, reverting on\n     * overflow (when the input is less than smallest int144 or\n     * greater than largest int144).\n     *\n     * Counterpart to Solidity's `int144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\n        downcasted = int144(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(144, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int136 from int256, reverting on\n     * overflow (when the input is less than smallest int136 or\n     * greater than largest int136).\n     *\n     * Counterpart to Solidity's `int136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\n        downcasted = int136(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(136, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int128 from int256, reverting on\n     * overflow (when the input is less than smallest int128 or\n     * greater than largest int128).\n     *\n     * Counterpart to Solidity's `int128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\n        downcasted = int128(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(128, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int120 from int256, reverting on\n     * overflow (when the input is less than smallest int120 or\n     * greater than largest int120).\n     *\n     * Counterpart to Solidity's `int120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\n        downcasted = int120(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(120, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int112 from int256, reverting on\n     * overflow (when the input is less than smallest int112 or\n     * greater than largest int112).\n     *\n     * Counterpart to Solidity's `int112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\n        downcasted = int112(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(112, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int104 from int256, reverting on\n     * overflow (when the input is less than smallest int104 or\n     * greater than largest int104).\n     *\n     * Counterpart to Solidity's `int104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\n        downcasted = int104(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(104, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int96 from int256, reverting on\n     * overflow (when the input is less than smallest int96 or\n     * greater than largest int96).\n     *\n     * Counterpart to Solidity's `int96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\n        downcasted = int96(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(96, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int88 from int256, reverting on\n     * overflow (when the input is less than smallest int88 or\n     * greater than largest int88).\n     *\n     * Counterpart to Solidity's `int88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\n        downcasted = int88(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(88, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int80 from int256, reverting on\n     * overflow (when the input is less than smallest int80 or\n     * greater than largest int80).\n     *\n     * Counterpart to Solidity's `int80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\n        downcasted = int80(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(80, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int72 from int256, reverting on\n     * overflow (when the input is less than smallest int72 or\n     * greater than largest int72).\n     *\n     * Counterpart to Solidity's `int72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\n        downcasted = int72(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(72, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int64 from int256, reverting on\n     * overflow (when the input is less than smallest int64 or\n     * greater than largest int64).\n     *\n     * Counterpart to Solidity's `int64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\n        downcasted = int64(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(64, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int56 from int256, reverting on\n     * overflow (when the input is less than smallest int56 or\n     * greater than largest int56).\n     *\n     * Counterpart to Solidity's `int56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\n        downcasted = int56(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(56, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int48 from int256, reverting on\n     * overflow (when the input is less than smallest int48 or\n     * greater than largest int48).\n     *\n     * Counterpart to Solidity's `int48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\n        downcasted = int48(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(48, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int40 from int256, reverting on\n     * overflow (when the input is less than smallest int40 or\n     * greater than largest int40).\n     *\n     * Counterpart to Solidity's `int40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\n        downcasted = int40(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(40, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int32 from int256, reverting on\n     * overflow (when the input is less than smallest int32 or\n     * greater than largest int32).\n     *\n     * Counterpart to Solidity's `int32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\n        downcasted = int32(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(32, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int24 from int256, reverting on\n     * overflow (when the input is less than smallest int24 or\n     * greater than largest int24).\n     *\n     * Counterpart to Solidity's `int24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\n        downcasted = int24(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(24, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int16 from int256, reverting on\n     * overflow (when the input is less than smallest int16 or\n     * greater than largest int16).\n     *\n     * Counterpart to Solidity's `int16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\n        downcasted = int16(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(16, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int8 from int256, reverting on\n     * overflow (when the input is less than smallest int8 or\n     * greater than largest int8).\n     *\n     * Counterpart to Solidity's `int8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\n        downcasted = int8(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(8, value);\n        }\n    }\n\n    /**\n     * @dev Converts an unsigned uint256 into a signed int256.\n     *\n     * Requirements:\n     *\n     * - input must be less than or equal to maxInt256.\n     */\n    function toInt256(uint256 value) internal pure returns (int256) {\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n        if (value > uint256(type(int256).max)) {\n            revert SafeCastOverflowedUintToInt(value);\n        }\n        return int256(value);\n    }\n\n    /**\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n     */\n    function toUint(bool b) internal pure returns (uint256 u) {\n        assembly (\"memory-safe\") {\n            u := iszero(iszero(b))\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/math/SignedMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two signed numbers.\n     */\n    function max(int256 a, int256 b) internal pure returns (int256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two signed numbers.\n     */\n    function min(int256 a, int256 b) internal pure returns (int256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two signed numbers without overflow.\n     * The result is rounded towards zero.\n     */\n    function average(int256 a, int256 b) internal pure returns (int256) {\n        // Formula from the book \"Hacker's Delight\"\n        int256 x = (a & b) + ((a ^ b) >> 1);\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\n    }\n\n    /**\n     * @dev Returns the absolute unsigned value of a signed value.\n     */\n    function abs(int256 n) internal pure returns (uint256) {\n        unchecked {\n            // Formula from the \"Bit Twiddling Hacks\" by Sean Eron Anderson.\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\n            // taking advantage of the most significant (or \"sign\" bit) in two's complement representation.\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\n            int256 mask = n >> 255;\n\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\n            return uint256((n + mask) ^ mask);\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Panic.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n *      using Panic for uint256;\n *\n *      // Use any of the declared internal constants\n *      function foo() { Panic.GENERIC.panic(); }\n *\n *      // Alternatively\n *      function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n    /// @dev generic / unspecified error\n    uint256 internal constant GENERIC = 0x00;\n    /// @dev used by the assert() builtin\n    uint256 internal constant ASSERT = 0x01;\n    /// @dev arithmetic underflow or overflow\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\n    /// @dev division or modulo by zero\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\n    /// @dev enum conversion error\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n    /// @dev invalid encoding in storage\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n    /// @dev empty array pop\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n    /// @dev array out of bounds access\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n    /// @dev resource error (too large allocation or too large array)\n    uint256 internal constant RESOURCE_ERROR = 0x41;\n    /// @dev calling invalid internal function\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n    /// @dev Reverts with a panic code. Recommended to use with\n    /// the internal constants with predefined codes.\n    function panic(uint256 code) internal pure {\n        assembly (\"memory-safe\") {\n            mstore(0x00, 0x4e487b71)\n            mstore(0x20, code)\n            revert(0x1c, 0x24)\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/ShortStrings.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/ShortStrings.sol)\n\npragma solidity ^0.8.20;\n\nimport {StorageSlot} from \"./StorageSlot.sol\";\n\n// | string  | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   |\n// | length  | 0x                                                              BB |\ntype ShortString is bytes32;\n\n/**\n * @dev This library provides functions to convert short memory strings\n * into a `ShortString` type that can be used as an immutable variable.\n *\n * Strings of arbitrary length can be optimized using this library if\n * they are short enough (up to 31 bytes) by packing them with their\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\n * fallback mechanism can be used for every other case.\n *\n * Usage example:\n *\n * ```solidity\n * contract Named {\n *     using ShortStrings for *;\n *\n *     ShortString private immutable _name;\n *     string private _nameFallback;\n *\n *     constructor(string memory contractName) {\n *         _name = contractName.toShortStringWithFallback(_nameFallback);\n *     }\n *\n *     function name() external view returns (string memory) {\n *         return _name.toStringWithFallback(_nameFallback);\n *     }\n * }\n * ```\n */\nlibrary ShortStrings {\n    // Used as an identifier for strings longer than 31 bytes.\n    bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\n\n    error StringTooLong(string str);\n    error InvalidShortString();\n\n    /**\n     * @dev Encode a string of at most 31 chars into a `ShortString`.\n     *\n     * This will trigger a `StringTooLong` error is the input string is too long.\n     */\n    function toShortString(string memory str) internal pure returns (ShortString) {\n        bytes memory bstr = bytes(str);\n        if (bstr.length > 31) {\n            revert StringTooLong(str);\n        }\n        return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\n    }\n\n    /**\n     * @dev Decode a `ShortString` back to a \"normal\" string.\n     */\n    function toString(ShortString sstr) internal pure returns (string memory) {\n        uint256 len = byteLength(sstr);\n        // using `new string(len)` would work locally but is not memory safe.\n        string memory str = new string(32);\n        assembly (\"memory-safe\") {\n            mstore(str, len)\n            mstore(add(str, 0x20), sstr)\n        }\n        return str;\n    }\n\n    /**\n     * @dev Return the length of a `ShortString`.\n     */\n    function byteLength(ShortString sstr) internal pure returns (uint256) {\n        uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\n        if (result > 31) {\n            revert InvalidShortString();\n        }\n        return result;\n    }\n\n    /**\n     * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\n     */\n    function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\n        if (bytes(value).length < 32) {\n            return toShortString(value);\n        } else {\n            StorageSlot.getStringSlot(store).value = value;\n            return ShortString.wrap(FALLBACK_SENTINEL);\n        }\n    }\n\n    /**\n     * @dev Decode a string that was encoded to `ShortString` or written to storage using {toShortStringWithFallback}.\n     */\n    function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\n        if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\n            return toString(value);\n        } else {\n            return store;\n        }\n    }\n\n    /**\n     * @dev Return the length of a string that was encoded to `ShortString` or written to storage using\n     * {toShortStringWithFallback}.\n     *\n     * WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n     * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\n     */\n    function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\n        if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\n            return byteLength(value);\n        } else {\n            return bytes(store).length;\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/StorageSlot.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(newImplementation.code.length > 0);\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    struct Int256Slot {\n        int256 value;\n    }\n\n    struct StringSlot {\n        string value;\n    }\n\n    struct BytesSlot {\n        bytes value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n     */\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n     */\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n     */\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n}\n"
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.4.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    using SafeCast for *;\n\n    bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n    uint8 private constant ADDRESS_LENGTH = 20;\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\n        (1 << 0x08) | // backspace\n            (1 << 0x09) | // tab\n            (1 << 0x0a) | // newline\n            (1 << 0x0c) | // form feed\n            (1 << 0x0d) | // carriage return\n            (1 << 0x22) | // double quote\n            (1 << 0x5c); // backslash\n\n    /**\n     * @dev The `value` string doesn't fit in the specified `length`.\n     */\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n    /**\n     * @dev The string being parsed contains characters that are not in scope of the given base.\n     */\n    error StringsInvalidChar();\n\n    /**\n     * @dev The string being parsed is not a properly formatted address.\n     */\n    error StringsInvalidAddressFormat();\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        unchecked {\n            uint256 length = Math.log10(value) + 1;\n            string memory buffer = new string(length);\n            uint256 ptr;\n            assembly (\"memory-safe\") {\n                ptr := add(add(buffer, 0x20), length)\n            }\n            while (true) {\n                ptr--;\n                assembly (\"memory-safe\") {\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n                }\n                value /= 10;\n                if (value == 0) break;\n            }\n            return buffer;\n        }\n    }\n\n    /**\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\n     */\n    function toStringSigned(int256 value) internal pure returns (string memory) {\n        return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\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        unchecked {\n            return toHexString(value, Math.log256(value) + 1);\n        }\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        uint256 localValue = value;\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_DIGITS[localValue & 0xf];\n            localValue >>= 4;\n        }\n        if (localValue != 0) {\n            revert StringsInsufficientHexLength(value, length);\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n     * representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n     * representation, according to EIP-55.\n     */\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\n        bytes memory buffer = bytes(toHexString(addr));\n\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\n        uint256 hashValue;\n        assembly (\"memory-safe\") {\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\n        }\n\n        for (uint256 i = 41; i > 1; --i) {\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\n                // case shift by xoring with 0x20\n                buffer[i] ^= 0x20;\n            }\n            hashValue >>= 4;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Returns true if the two strings are equal.\n     */\n    function equal(string memory a, string memory b) internal pure returns (bool) {\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n    }\n\n    /**\n     * @dev Parse a decimal string and returns the value as a `uint256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `[0-9]*`\n     * - The result must fit into an `uint256` type\n     */\n    function parseUint(string memory input) internal pure returns (uint256) {\n        return parseUint(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `[0-9]*`\n     * - The result must fit into an `uint256` type\n     */\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n     * character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseUint(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, uint256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseUintUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseUintUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, uint256 value) {\n        bytes memory buffer = bytes(input);\n\n        uint256 result = 0;\n        for (uint256 i = begin; i < end; ++i) {\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\n            if (chr > 9) return (false, 0);\n            result *= 10;\n            result += chr;\n        }\n        return (true, result);\n    }\n\n    /**\n     * @dev Parse a decimal string and returns the value as a `int256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `[-+]?[0-9]*`\n     * - The result must fit in an `int256` type.\n     */\n    function parseInt(string memory input) internal pure returns (int256) {\n        return parseInt(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `[-+]?[0-9]*`\n     * - The result must fit in an `int256` type.\n     */\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\n        (bool success, int256 value) = tryParseInt(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n     * the result does not fit in a `int256`.\n     *\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\n     */\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\n\n    /**\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n     * character or if the result does not fit in a `int256`.\n     *\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\n     */\n    function tryParseInt(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, int256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseIntUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseIntUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, int256 value) {\n        bytes memory buffer = bytes(input);\n\n        // Check presence of a negative sign.\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        bool positiveSign = sign == bytes1(\"+\");\n        bool negativeSign = sign == bytes1(\"-\");\n        uint256 offset = (positiveSign || negativeSign).toUint();\n\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\n\n        if (absSuccess && absValue < ABS_MIN_INT256) {\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\n            return (true, type(int256).min);\n        } else return (false, 0);\n    }\n\n    /**\n     * @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n     * - The result must fit in an `uint256` type.\n     */\n    function parseHexUint(string memory input) internal pure returns (uint256) {\n        return parseHexUint(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n     * - The result must fit in an `uint256` type.\n     */\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n     * invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseHexUint(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, uint256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseHexUintUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, uint256 value) {\n        bytes memory buffer = bytes(input);\n\n        // skip 0x prefix if present\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\"0x\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        uint256 offset = hasPrefix.toUint() * 2;\n\n        uint256 result = 0;\n        for (uint256 i = begin + offset; i < end; ++i) {\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\n            if (chr > 15) return (false, 0);\n            result *= 16;\n            unchecked {\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\n                result += chr;\n            }\n        }\n        return (true, result);\n    }\n\n    /**\n     * @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n     *\n     * Requirements:\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\n     */\n    function parseAddress(string memory input) internal pure returns (address) {\n        return parseAddress(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\n     */\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\n        (bool success, address value) = tryParseAddress(input, begin, end);\n        if (!success) revert StringsInvalidAddressFormat();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n     * formatted address. See {parseAddress-string} requirements.\n     */\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\n        return tryParseAddress(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\n     */\n    function tryParseAddress(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, address value) {\n        if (end > bytes(input).length || begin > end) return (false, address(0));\n\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\"0x\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\n\n        // check that input is the correct length\n        if (end - begin == expectedLength) {\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\n            return (s, address(uint160(v)));\n        } else {\n            return (false, address(0));\n        }\n    }\n\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\n        uint8 value = uint8(chr);\n\n        // Try to parse `chr`:\n        // - Case 1: [0-9]\n        // - Case 2: [a-f]\n        // - Case 3: [A-F]\n        // - otherwise not supported\n        unchecked {\n            if (value > 47 && value < 58) value -= 48;\n            else if (value > 96 && value < 103) value -= 87;\n            else if (value > 64 && value < 71) value -= 55;\n            else return type(uint8).max;\n        }\n\n        return value;\n    }\n\n    /**\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n     *\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n     *\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\n     * characters that are not in this range, but other tooling may provide different results.\n     */\n    function escapeJSON(string memory input) internal pure returns (string memory) {\n        bytes memory buffer = bytes(input);\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\n        uint256 outputLength = 0;\n\n        for (uint256 i; i < buffer.length; ++i) {\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\n                output[outputLength++] = \"\\\\\";\n                if (char == 0x08) output[outputLength++] = \"b\";\n                else if (char == 0x09) output[outputLength++] = \"t\";\n                else if (char == 0x0a) output[outputLength++] = \"n\";\n                else if (char == 0x0c) output[outputLength++] = \"f\";\n                else if (char == 0x0d) output[outputLength++] = \"r\";\n                else if (char == 0x5c) output[outputLength++] = \"\\\\\";\n                else if (char == 0x22) {\n                    // solhint-disable-next-line quotes\n                    output[outputLength++] = '\"';\n                }\n            } else {\n                output[outputLength++] = char;\n            }\n        }\n        // write the actual length and deallocate unused memory\n        assembly (\"memory-safe\") {\n            mstore(output, outputLength)\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\n        }\n\n        return string(output);\n    }\n\n    /**\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\n     *\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n     * assembly block as such would prevent some optimizations.\n     */\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\n        assembly (\"memory-safe\") {\n            value := mload(add(add(buffer, 0x20), offset))\n        }\n    }\n}\n"
      },
      "contracts/CustomEAS.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.26;\n\nimport { EAS, ISchemaRegistry } from \"@ethereum-attestation-service/eas-contracts/contracts/EAS.sol\";\n\ncontract CustomEAS is EAS {\n    constructor(ISchemaRegistry registry) EAS(registry) { }\n}\n"
      },
      "contracts/CustomSchemaRegistry.sol": {
        "content": "// SPDX-License-Identifier: FSL-1.1-MIT\npragma solidity ^0.8.26;\n\nimport { SchemaRegistry } from \"@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol\";\n\ncontract CustomSchemaRegistry is SchemaRegistry { }\n"
      }
    },
    "settings": {
      "evmVersion": "cancun",
      "viaIR": true,
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "sources": {
      "@ethereum-attestation-service/eas-contracts/contracts/Common.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Common.sol",
          "exportedSymbols": {
            "AccessDenied": [
              9
            ],
            "Attestation": [
              49
            ],
            "DeadlineExpired": [
              11
            ],
            "EMPTY_UID": [
              4
            ],
            "InvalidEAS": [
              13
            ],
            "InvalidLength": [
              15
            ],
            "InvalidSignature": [
              17
            ],
            "NO_EXPIRATION_TIME": [
              7
            ],
            "NotFound": [
              19
            ],
            "Signature": [
              27
            ],
            "uncheckedInc": [
              65
            ]
          },
          "id": 66,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:0"
            },
            {
              "constant": true,
              "id": 4,
              "mutability": "constant",
              "name": "EMPTY_UID",
              "nameLocation": "126:9:0",
              "nodeType": "VariableDeclaration",
              "scope": 66,
              "src": "109:30:0",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              },
              "typeName": {
                "id": 2,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "109:7:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "value": {
                "hexValue": "30",
                "id": 3,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "138:1:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 7,
              "mutability": "constant",
              "name": "NO_EXPIRATION_TIME",
              "nameLocation": "219:18:0",
              "nodeType": "VariableDeclaration",
              "scope": 66,
              "src": "203:38:0",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint64",
                "typeString": "uint64"
              },
              "typeName": {
                "id": 5,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "203:6:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              },
              "value": {
                "hexValue": "30",
                "id": 6,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "240:1:0",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0"
              },
              "visibility": "internal"
            },
            {
              "errorSelector": "4ca88867",
              "id": 9,
              "name": "AccessDenied",
              "nameLocation": "250:12:0",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 8,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "262:2:0"
              },
              "src": "244:21:0"
            },
            {
              "errorSelector": "1ab7da6b",
              "id": 11,
              "name": "DeadlineExpired",
              "nameLocation": "272:15:0",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 10,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "287:2:0"
              },
              "src": "266:24:0"
            },
            {
              "errorSelector": "83780ffe",
              "id": 13,
              "name": "InvalidEAS",
              "nameLocation": "297:10:0",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 12,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "307:2:0"
              },
              "src": "291:19:0"
            },
            {
              "errorSelector": "947d5a84",
              "id": 15,
              "name": "InvalidLength",
              "nameLocation": "317:13:0",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 14,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "330:2:0"
              },
              "src": "311:22:0"
            },
            {
              "errorSelector": "8baa579f",
              "id": 17,
              "name": "InvalidSignature",
              "nameLocation": "340:16:0",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 16,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "356:2:0"
              },
              "src": "334:25:0"
            },
            {
              "errorSelector": "c5723b51",
              "id": 19,
              "name": "NotFound",
              "nameLocation": "366:8:0",
              "nodeType": "ErrorDefinition",
              "parameters": {
                "id": 18,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "374:2:0"
              },
              "src": "360:17:0"
            },
            {
              "canonicalName": "Signature",
              "documentation": {
                "id": 20,
                "nodeType": "StructuredDocumentation",
                "src": "379:56:0",
                "text": "@notice A struct representing ECDSA signature data."
              },
              "id": 27,
              "members": [
                {
                  "constant": false,
                  "id": 22,
                  "mutability": "mutable",
                  "name": "v",
                  "nameLocation": "464:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 27,
                  "src": "458:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 21,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "458:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24,
                  "mutability": "mutable",
                  "name": "r",
                  "nameLocation": "499:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 27,
                  "src": "491:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "491:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26,
                  "mutability": "mutable",
                  "name": "s",
                  "nameLocation": "550:1:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 27,
                  "src": "542:9:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 25,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "542:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "Signature",
              "nameLocation": "442:9:0",
              "nodeType": "StructDefinition",
              "scope": 66,
              "src": "435:142:0",
              "visibility": "public"
            },
            {
              "canonicalName": "Attestation",
              "documentation": {
                "id": 28,
                "nodeType": "StructuredDocumentation",
                "src": "579:56:0",
                "text": "@notice A struct representing a single attestation."
              },
              "id": 49,
              "members": [
                {
                  "constant": false,
                  "id": 30,
                  "mutability": "mutable",
                  "name": "uid",
                  "nameLocation": "668:3:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "660:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "660:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 32,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "728:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "720:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 31,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "720:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 34,
                  "mutability": "mutable",
                  "name": "time",
                  "nameLocation": "787:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "780:11:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 33,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "780:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 36,
                  "mutability": "mutable",
                  "name": "expirationTime",
                  "nameLocation": "867:14:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "860:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 35,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "860:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 38,
                  "mutability": "mutable",
                  "name": "revocationTime",
                  "nameLocation": "953:14:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "946:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 37,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "946:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 40,
                  "mutability": "mutable",
                  "name": "refUID",
                  "nameLocation": "1044:6:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "1036:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 39,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1036:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "1103:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "1095:17:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 41,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1095:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44,
                  "mutability": "mutable",
                  "name": "attester",
                  "nameLocation": "1163:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "1155:16:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 43,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1155:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 46,
                  "mutability": "mutable",
                  "name": "revocable",
                  "nameLocation": "1225:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "1220:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 45,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1220:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 48,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "1287:4:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 49,
                  "src": "1281:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 47,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1281:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "Attestation",
              "nameLocation": "642:11:0",
              "nodeType": "StructDefinition",
              "scope": 66,
              "src": "635:687:0",
              "visibility": "public"
            },
            {
              "body": {
                "id": 64,
                "nodeType": "Block",
                "src": "1455:44:0",
                "statements": [
                  {
                    "id": 63,
                    "nodeType": "UncheckedBlock",
                    "src": "1461:36:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 61,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 57,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 55,
                            "src": "1481:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 60,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 58,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 52,
                              "src": "1485:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 59,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1489:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1485:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1481:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 62,
                        "nodeType": "ExpressionStatement",
                        "src": "1481:9:0"
                      }
                    ]
                  }
                ]
              },
              "documentation": {
                "id": 50,
                "nodeType": "StructuredDocumentation",
                "src": "1324:73:0",
                "text": "@notice A helper function to work with unchecked iterators in loops."
              },
              "id": 65,
              "implemented": true,
              "kind": "freeFunction",
              "modifiers": [],
              "name": "uncheckedInc",
              "nameLocation": "1406:12:0",
              "nodeType": "FunctionDefinition",
              "parameters": {
                "id": 53,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 52,
                    "mutability": "mutable",
                    "name": "i",
                    "nameLocation": "1427:1:0",
                    "nodeType": "VariableDeclaration",
                    "scope": 65,
                    "src": "1419:9:0",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 51,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1419:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1418:11:0"
              },
              "returnParameters": {
                "id": 56,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 55,
                    "mutability": "mutable",
                    "name": "j",
                    "nameLocation": "1452:1:0",
                    "nodeType": "VariableDeclaration",
                    "scope": 65,
                    "src": "1444:9:0",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 54,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1444:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "visibility": "internal"
                  }
                ],
                "src": "1443:11:0"
              },
              "scope": 66,
              "src": "1397:102:0",
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            }
          ],
          "src": "33:1467:0"
        },
        "id": 0
      },
      "@ethereum-attestation-service/eas-contracts/contracts/EAS.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/EAS.sol",
          "exportedSymbols": {
            "AccessDenied": [
              9
            ],
            "Address": [
              3297
            ],
            "Attestation": [
              49
            ],
            "AttestationRequest": [
              2049
            ],
            "AttestationRequestData": [
              2042
            ],
            "DelegatedAttestationRequest": [
              2063
            ],
            "DelegatedRevocationRequest": [
              2114
            ],
            "EAS": [
              2019
            ],
            "EIP1271Verifier": [
              2922
            ],
            "EMPTY_UID": [
              4
            ],
            "IEAS": [
              2326
            ],
            "ISchemaRegistry": [
              2379
            ],
            "ISchemaResolver": [
              2982
            ],
            "InvalidLength": [
              15
            ],
            "MultiAttestationRequest": [
              2071
            ],
            "MultiDelegatedAttestationRequest": [
              2087
            ],
            "MultiDelegatedRevocationRequest": [
              2138
            ],
            "MultiRevocationRequest": [
              2122
            ],
            "NO_EXPIRATION_TIME": [
              7
            ],
            "NotFound": [
              19
            ],
            "RevocationRequest": [
              2100
            ],
            "RevocationRequestData": [
              2093
            ],
            "SchemaRecord": [
              2343
            ],
            "Semver": [
              2588
            ],
            "uncheckedInc": [
              65
            ]
          },
          "id": 2020,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 67,
              "literals": [
                "solidity",
                "0.8",
                ".27"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:1"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "@openzeppelin/contracts/utils/Address.sol",
              "id": 69,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2020,
              "sourceUnit": 3298,
              "src": "58:68:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 68,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3297,
                    "src": "67:7:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol",
              "file": "./eip1271/EIP1271Verifier.sol",
              "id": 71,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2020,
              "sourceUnit": 2923,
              "src": "128:64:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 70,
                    "name": "EIP1271Verifier",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2922,
                    "src": "137:15:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol",
              "file": "./resolver/ISchemaResolver.sol",
              "id": 73,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2020,
              "sourceUnit": 2983,
              "src": "194:65:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 72,
                    "name": "ISchemaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2982,
                    "src": "203:15:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Common.sol",
              "file": "./Common.sol",
              "id": 80,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2020,
              "sourceUnit": 66,
              "src": "280:138:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 74,
                    "name": "AccessDenied",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9,
                    "src": "293:12:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 75,
                    "name": "EMPTY_UID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4,
                    "src": "311:9:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 76,
                    "name": "InvalidLength",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15,
                    "src": "326:13:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 77,
                    "name": "NotFound",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19,
                    "src": "345:8:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 78,
                    "name": "NO_EXPIRATION_TIME",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7,
                    "src": "359:18:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 79,
                    "name": "uncheckedInc",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 65,
                    "src": "383:12:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol",
              "file": "./IEAS.sol",
              "id": 93,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2020,
              "sourceUnit": 2327,
              "src": "439:354:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 81,
                    "name": "Attestation",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 49,
                    "src": "452:11:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 82,
                    "name": "AttestationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2049,
                    "src": "469:18:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 83,
                    "name": "AttestationRequestData",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2042,
                    "src": "493:22:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 84,
                    "name": "DelegatedAttestationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2063,
                    "src": "521:27:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 85,
                    "name": "DelegatedRevocationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2114,
                    "src": "554:26:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 86,
                    "name": "IEAS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2326,
                    "src": "586:4:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 87,
                    "name": "MultiAttestationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2071,
                    "src": "596:23:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 88,
                    "name": "MultiDelegatedAttestationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2087,
                    "src": "625:32:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 89,
                    "name": "MultiDelegatedRevocationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2138,
                    "src": "663:31:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 90,
                    "name": "MultiRevocationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2122,
                    "src": "700:22:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 91,
                    "name": "RevocationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2100,
                    "src": "728:17:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 92,
                    "name": "RevocationRequestData",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2093,
                    "src": "751:21:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Semver.sol",
              "file": "./Semver.sol",
              "id": 95,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2020,
              "sourceUnit": 2589,
              "src": "795:38:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 94,
                    "name": "Semver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2588,
                    "src": "804:6:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol",
              "file": "./ISchemaRegistry.sol",
              "id": 98,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2020,
              "sourceUnit": 2380,
              "src": "834:70:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 96,
                    "name": "ISchemaRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2379,
                    "src": "843:15:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 97,
                    "name": "SchemaRecord",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2343,
                    "src": "860:12:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 100,
                    "name": "IEAS",
                    "nameLocations": [
                      "992:4:1"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2326,
                    "src": "992:4:1"
                  },
                  "id": 101,
                  "nodeType": "InheritanceSpecifier",
                  "src": "992:4:1"
                },
                {
                  "baseName": {
                    "id": 102,
                    "name": "Semver",
                    "nameLocations": [
                      "998:6:1"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2588,
                    "src": "998:6:1"
                  },
                  "id": 103,
                  "nodeType": "InheritanceSpecifier",
                  "src": "998:6:1"
                },
                {
                  "baseName": {
                    "id": 104,
                    "name": "EIP1271Verifier",
                    "nameLocations": [
                      "1006:15:1"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2922,
                    "src": "1006:15:1"
                  },
                  "id": 105,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1006:15:1"
                }
              ],
              "canonicalName": "EAS",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 99,
                "nodeType": "StructuredDocumentation",
                "src": "906:70:1",
                "text": "@title EAS\n @notice The Ethereum Attestation Service protocol."
              },
              "fullyImplemented": true,
              "id": 2019,
              "linearizedBaseContracts": [
                2019,
                2922,
                5920,
                3021,
                2588,
                2326,
                2389
              ],
              "name": "EAS",
              "nameLocation": "985:3:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 108,
                  "libraryName": {
                    "id": 106,
                    "name": "Address",
                    "nameLocations": [
                      "1034:7:1"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3297,
                    "src": "1034:7:1"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1028:34:1",
                  "typeName": {
                    "id": 107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1046:15:1",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  }
                },
                {
                  "errorSelector": "905e7107",
                  "id": 110,
                  "name": "AlreadyRevoked",
                  "nameLocation": "1074:14:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 109,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1088:2:1"
                  },
                  "src": "1068:23:1"
                },
                {
                  "errorSelector": "ec9d6eeb",
                  "id": 112,
                  "name": "AlreadyRevokedOffchain",
                  "nameLocation": "1102:22:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 111,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1124:2:1"
                  },
                  "src": "1096:31:1"
                },
                {
                  "errorSelector": "2e267946",
                  "id": 114,
                  "name": "AlreadyTimestamped",
                  "nameLocation": "1138:18:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 113,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1156:2:1"
                  },
                  "src": "1132:27:1"
                },
                {
                  "errorSelector": "11011294",
                  "id": 116,
                  "name": "InsufficientValue",
                  "nameLocation": "1170:17:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 115,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1187:2:1"
                  },
                  "src": "1164:26:1"
                },
                {
                  "errorSelector": "bd8ba84d",
                  "id": 118,
                  "name": "InvalidAttestation",
                  "nameLocation": "1201:18:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 117,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1219:2:1"
                  },
                  "src": "1195:27:1"
                },
                {
                  "errorSelector": "e8bee839",
                  "id": 120,
                  "name": "InvalidAttestations",
                  "nameLocation": "1233:19:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 119,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1252:2:1"
                  },
                  "src": "1227:28:1"
                },
                {
                  "errorSelector": "08e8b937",
                  "id": 122,
                  "name": "InvalidExpirationTime",
                  "nameLocation": "1266:21:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 121,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1287:2:1"
                  },
                  "src": "1260:30:1"
                },
                {
                  "errorSelector": "01da1572",
                  "id": 124,
                  "name": "InvalidOffset",
                  "nameLocation": "1301:13:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 123,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1314:2:1"
                  },
                  "src": "1295:22:1"
                },
                {
                  "errorSelector": "11a1e697",
                  "id": 126,
                  "name": "InvalidRegistry",
                  "nameLocation": "1328:15:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 125,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1343:2:1"
                  },
                  "src": "1322:24:1"
                },
                {
                  "errorSelector": "ccf3bb27",
                  "id": 128,
                  "name": "InvalidRevocation",
                  "nameLocation": "1357:17:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 127,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1374:2:1"
                  },
                  "src": "1351:26:1"
                },
                {
                  "errorSelector": "bf2f3a8b",
                  "id": 130,
                  "name": "InvalidRevocations",
                  "nameLocation": "1388:18:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 129,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1406:2:1"
                  },
                  "src": "1382:27:1"
                },
                {
                  "errorSelector": "bf37b20e",
                  "id": 132,
                  "name": "InvalidSchema",
                  "nameLocation": "1420:13:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 131,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1433:2:1"
                  },
                  "src": "1414:22:1"
                },
                {
                  "errorSelector": "baa3de5f",
                  "id": 134,
                  "name": "InvalidVerifier",
                  "nameLocation": "1447:15:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 133,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1462:2:1"
                  },
                  "src": "1441:24:1"
                },
                {
                  "errorSelector": "157bd4c3",
                  "id": 136,
                  "name": "Irrevocable",
                  "nameLocation": "1476:11:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 135,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1487:2:1"
                  },
                  "src": "1470:20:1"
                },
                {
                  "errorSelector": "1574f9f3",
                  "id": 138,
                  "name": "NotPayable",
                  "nameLocation": "1501:10:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 137,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1511:2:1"
                  },
                  "src": "1495:19:1"
                },
                {
                  "errorSelector": "21b8eeb9",
                  "id": 140,
                  "name": "WrongSchema",
                  "nameLocation": "1525:11:1",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 139,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1536:2:1"
                  },
                  "src": "1519:20:1"
                },
                {
                  "canonicalName": "EAS.AttestationsResult",
                  "documentation": {
                    "id": 141,
                    "nodeType": "StructuredDocumentation",
                    "src": "1545:65:1",
                    "text": "@notice A struct representing an internal attestation result."
                  },
                  "id": 147,
                  "members": [
                    {
                      "constant": false,
                      "id": 143,
                      "mutability": "mutable",
                      "name": "usedValue",
                      "nameLocation": "1659:9:1",
                      "nodeType": "VariableDeclaration",
                      "scope": 147,
                      "src": "1651:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 142,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1651:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 146,
                      "mutability": "mutable",
                      "name": "uids",
                      "nameLocation": "1736:4:1",
                      "nodeType": "VariableDeclaration",
                      "scope": 147,
                      "src": "1726:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 144,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1726:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 145,
                        "nodeType": "ArrayTypeName",
                        "src": "1726:9:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "AttestationsResult",
                  "nameLocation": "1622:18:1",
                  "nodeType": "StructDefinition",
                  "scope": 2019,
                  "src": "1615:165:1",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 150,
                  "mutability": "immutable",
                  "name": "_schemaRegistry",
                  "nameLocation": "1855:15:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2019,
                  "src": "1821:49:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                    "typeString": "contract ISchemaRegistry"
                  },
                  "typeName": {
                    "id": 149,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 148,
                      "name": "ISchemaRegistry",
                      "nameLocations": [
                        "1821:15:1"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2379,
                      "src": "1821:15:1"
                    },
                    "referencedDeclaration": 2379,
                    "src": "1821:15:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                      "typeString": "contract ISchemaRegistry"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 155,
                  "mutability": "mutable",
                  "name": "_db",
                  "nameLocation": "1996:3:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2019,
                  "src": "1940:59:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Attestation_$49_storage_$",
                    "typeString": "mapping(bytes32 => struct Attestation)"
                  },
                  "typeName": {
                    "id": 154,
                    "keyName": "uid",
                    "keyNameLocation": "1956:3:1",
                    "keyType": {
                      "id": 151,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "1948:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1940:47:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Attestation_$49_storage_$",
                      "typeString": "mapping(bytes32 => struct Attestation)"
                    },
                    "valueName": "attestation",
                    "valueNameLocation": "1975:11:1",
                    "valueType": {
                      "id": 153,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 152,
                        "name": "Attestation",
                        "nameLocations": [
                          "1963:11:1"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 49,
                        "src": "1963:11:1"
                      },
                      "referencedDeclaration": 49,
                      "src": "1963:11:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                        "typeString": "struct Attestation"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 159,
                  "mutability": "mutable",
                  "name": "_timestamps",
                  "nameLocation": "2117:11:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2019,
                  "src": "2067:61:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                    "typeString": "mapping(bytes32 => uint64)"
                  },
                  "typeName": {
                    "id": 158,
                    "keyName": "data",
                    "keyNameLocation": "2083:4:1",
                    "keyType": {
                      "id": 156,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "2075:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2067:41:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                      "typeString": "mapping(bytes32 => uint64)"
                    },
                    "valueName": "timestamp",
                    "valueNameLocation": "2098:9:1",
                    "valueType": {
                      "id": 157,
                      "name": "uint64",
                      "nodeType": "ElementaryTypeName",
                      "src": "2091:6:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 165,
                  "mutability": "mutable",
                  "name": "_revocationsOffchain",
                  "nameLocation": "2296:20:1",
                  "nodeType": "VariableDeclaration",
                  "scope": 2019,
                  "src": "2207:109:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint64_$_$",
                    "typeString": "mapping(address => mapping(bytes32 => uint64))"
                  },
                  "typeName": {
                    "id": 164,
                    "keyName": "revoker",
                    "keyNameLocation": "2223:7:1",
                    "keyType": {
                      "id": 160,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2215:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2207:80:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint64_$_$",
                      "typeString": "mapping(address => mapping(bytes32 => uint64))"
                    },
                    "valueName": "timestamps",
                    "valueNameLocation": "2276:10:1",
                    "valueType": {
                      "id": 163,
                      "keyName": "data",
                      "keyNameLocation": "2250:4:1",
                      "keyType": {
                        "id": 161,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2242:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2234:41:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                        "typeString": "mapping(bytes32 => uint64)"
                      },
                      "valueName": "timestamp",
                      "valueNameLocation": "2265:9:1",
                      "valueType": {
                        "id": 162,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "2258:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 199,
                    "nodeType": "Block",
                    "src": "2517:139:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 183,
                                "name": "registry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 169,
                                "src": "2539:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                                  "typeString": "contract ISchemaRegistry"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                                  "typeString": "contract ISchemaRegistry"
                                }
                              ],
                              "id": 182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2531:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 181,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2531:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2531:17:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2560:1:1",
                                "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": 186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2552:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 185,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2552:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 188,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2552:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2531:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 194,
                        "nodeType": "IfStatement",
                        "src": "2527:86:1",
                        "trueBody": {
                          "id": 193,
                          "nodeType": "Block",
                          "src": "2564:49:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 190,
                                  "name": "InvalidRegistry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 126,
                                  "src": "2585:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2585:17:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 192,
                              "nodeType": "RevertStatement",
                              "src": "2578:24:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 195,
                            "name": "_schemaRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 150,
                            "src": "2623:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                              "typeString": "contract ISchemaRegistry"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 196,
                            "name": "registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 169,
                            "src": "2641:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                              "typeString": "contract ISchemaRegistry"
                            }
                          },
                          "src": "2623:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                            "typeString": "contract ISchemaRegistry"
                          }
                        },
                        "id": 198,
                        "nodeType": "ExpressionStatement",
                        "src": "2623:26:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 166,
                    "nodeType": "StructuredDocumentation",
                    "src": "2323:103:1",
                    "text": "@dev Creates a new EAS instance.\n @param registry The address of the global schema registry."
                  },
                  "id": 200,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "31",
                          "id": 172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2476:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        {
                          "hexValue": "33",
                          "id": 173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2479:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        {
                          "hexValue": "30",
                          "id": 174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2482:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "id": 175,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 171,
                        "name": "Semver",
                        "nameLocations": [
                          "2469:6:1"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2588,
                        "src": "2469:6:1"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2469:15:1"
                    },
                    {
                      "arguments": [
                        {
                          "hexValue": "454153",
                          "id": 177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2501:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_9fed719e0073f95229e6f4f6b6f28f260c524ab08aa40b11f9c28cb710d7c72a",
                            "typeString": "literal_string \"EAS\""
                          },
                          "value": "EAS"
                        },
                        {
                          "hexValue": "312e332e30",
                          "id": 178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2508:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_6a08c3e203132c561752255a4d52ffae85bb9c5d33cb3291520dea1b84356389",
                            "typeString": "literal_string \"1.3.0\""
                          },
                          "value": "1.3.0"
                        }
                      ],
                      "id": 179,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 176,
                        "name": "EIP1271Verifier",
                        "nameLocations": [
                          "2485:15:1"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2922,
                        "src": "2485:15:1"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2485:31:1"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 169,
                        "mutability": "mutable",
                        "name": "registry",
                        "nameLocation": "2459:8:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 200,
                        "src": "2443:24:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                          "typeString": "contract ISchemaRegistry"
                        },
                        "typeName": {
                          "id": 168,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 167,
                            "name": "ISchemaRegistry",
                            "nameLocations": [
                              "2443:15:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2379,
                            "src": "2443:15:1"
                          },
                          "referencedDeclaration": 2379,
                          "src": "2443:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                            "typeString": "contract ISchemaRegistry"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2442:26:1"
                  },
                  "returnParameters": {
                    "id": 180,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2517:0:1"
                  },
                  "scope": 2019,
                  "src": "2431:225:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2186
                  ],
                  "body": {
                    "id": 209,
                    "nodeType": "Block",
                    "src": "2756:39:1",
                    "statements": [
                      {
                        "expression": {
                          "id": 207,
                          "name": "_schemaRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 150,
                          "src": "2773:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                            "typeString": "contract ISchemaRegistry"
                          }
                        },
                        "functionReturnParameters": 206,
                        "id": 208,
                        "nodeType": "Return",
                        "src": "2766:22:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 201,
                    "nodeType": "StructuredDocumentation",
                    "src": "2662:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "f10b5cc8",
                  "id": 210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSchemaRegistry",
                  "nameLocation": "2696:17:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 202,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2713:2:1"
                  },
                  "returnParameters": {
                    "id": 206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 205,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 210,
                        "src": "2739:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                          "typeString": "contract ISchemaRegistry"
                        },
                        "typeName": {
                          "id": 204,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 203,
                            "name": "ISchemaRegistry",
                            "nameLocations": [
                              "2739:15:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2379,
                            "src": "2739:15:1"
                          },
                          "referencedDeclaration": 2379,
                          "src": "2739:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                            "typeString": "contract ISchemaRegistry"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2738:17:1"
                  },
                  "scope": 2019,
                  "src": "2687:108:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2195
                  ],
                  "body": {
                    "id": 252,
                    "nodeType": "Block",
                    "src": "2914:203:1",
                    "statements": [
                      {
                        "assignments": [
                          223
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 223,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "2956:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 252,
                            "src": "2924:36:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AttestationRequestData[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 221,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 220,
                                  "name": "AttestationRequestData",
                                  "nameLocations": [
                                    "2924:22:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2042,
                                  "src": "2924:22:1"
                                },
                                "referencedDeclaration": 2042,
                                "src": "2924:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                                  "typeString": "struct AttestationRequestData"
                                }
                              },
                              "id": 222,
                              "nodeType": "ArrayTypeName",
                              "src": "2924:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                                "typeString": "struct AttestationRequestData[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 230,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2992:1:1",
                              "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": 227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2963:28:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct AttestationRequestData memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 225,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 224,
                                  "name": "AttestationRequestData",
                                  "nameLocations": [
                                    "2967:22:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2042,
                                  "src": "2967:22:1"
                                },
                                "referencedDeclaration": 2042,
                                "src": "2967:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                                  "typeString": "struct AttestationRequestData"
                                }
                              },
                              "id": 226,
                              "nodeType": "ArrayTypeName",
                              "src": "2967:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                                "typeString": "struct AttestationRequestData[]"
                              }
                            }
                          },
                          "id": 229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2963:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AttestationRequestData memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2924:70:1"
                      },
                      {
                        "expression": {
                          "id": 236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 231,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 223,
                              "src": "3004:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AttestationRequestData memory[] memory"
                              }
                            },
                            "id": 233,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3009:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3004:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                              "typeString": "struct AttestationRequestData memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 234,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 214,
                              "src": "3014:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AttestationRequest_$2049_calldata_ptr",
                                "typeString": "struct AttestationRequest calldata"
                              }
                            },
                            "id": 235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3022:4:1",
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2048,
                            "src": "3014:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AttestationRequestData_$2042_calldata_ptr",
                              "typeString": "struct AttestationRequestData calldata"
                            }
                          },
                          "src": "3004:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                            "typeString": "struct AttestationRequestData memory"
                          }
                        },
                        "id": 237,
                        "nodeType": "ExpressionStatement",
                        "src": "3004:22:1"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 239,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 214,
                                    "src": "3052:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationRequest_$2049_calldata_ptr",
                                      "typeString": "struct AttestationRequest calldata"
                                    }
                                  },
                                  "id": 240,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3060:6:1",
                                  "memberName": "schema",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2045,
                                  "src": "3052:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 241,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 223,
                                  "src": "3068:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct AttestationRequestData memory[] memory"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 242,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "3074:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3078:6:1",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "3074:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 244,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "3086:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3090:5:1",
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "src": "3086:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "hexValue": "74727565",
                                  "id": 246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3097:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct AttestationRequestData memory[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "id": 238,
                                "name": "_attest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1307,
                                "src": "3044:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_uint256_$_t_bool_$returns$_t_struct$_AttestationsResult_$147_memory_ptr_$",
                                  "typeString": "function (bytes32,struct AttestationRequestData memory[] memory,address,uint256,bool) returns (struct EAS.AttestationsResult memory)"
                                }
                              },
                              "id": 247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3044:58:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                "typeString": "struct EAS.AttestationsResult memory"
                              }
                            },
                            "id": 248,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3103:4:1",
                            "memberName": "uids",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 146,
                            "src": "3044:63:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 250,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3108:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3044:66:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 218,
                        "id": 251,
                        "nodeType": "Return",
                        "src": "3037:73:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 211,
                    "nodeType": "StructuredDocumentation",
                    "src": "2801:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "f17325e7",
                  "id": 253,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "attest",
                  "nameLocation": "2835:6:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 215,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 214,
                        "mutability": "mutable",
                        "name": "request",
                        "nameLocation": "2870:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 253,
                        "src": "2842:35:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AttestationRequest_$2049_calldata_ptr",
                          "typeString": "struct AttestationRequest"
                        },
                        "typeName": {
                          "id": 213,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 212,
                            "name": "AttestationRequest",
                            "nameLocations": [
                              "2842:18:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2049,
                            "src": "2842:18:1"
                          },
                          "referencedDeclaration": 2049,
                          "src": "2842:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AttestationRequest_$2049_storage_ptr",
                            "typeString": "struct AttestationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2841:37:1"
                  },
                  "returnParameters": {
                    "id": 218,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 217,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 253,
                        "src": "2905:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 216,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2905:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2904:9:1"
                  },
                  "scope": 2019,
                  "src": "2826:291:1",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2204
                  ],
                  "body": {
                    "id": 299,
                    "nodeType": "Block",
                    "src": "3280:278:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 263,
                              "name": "delegatedRequest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 257,
                              "src": "3304:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_calldata_ptr",
                                "typeString": "struct DelegatedAttestationRequest calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_calldata_ptr",
                                "typeString": "struct DelegatedAttestationRequest calldata"
                              }
                            ],
                            "id": 262,
                            "name": "_verifyAttest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2826,
                            "src": "3290:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_DelegatedAttestationRequest_$2063_memory_ptr_$returns$__$",
                              "typeString": "function (struct DelegatedAttestationRequest memory)"
                            }
                          },
                          "id": 264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3290:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 265,
                        "nodeType": "ExpressionStatement",
                        "src": "3290:31:1"
                      },
                      {
                        "assignments": [
                          270
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 270,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "3364:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 299,
                            "src": "3332:36:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AttestationRequestData[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 268,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 267,
                                  "name": "AttestationRequestData",
                                  "nameLocations": [
                                    "3332:22:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2042,
                                  "src": "3332:22:1"
                                },
                                "referencedDeclaration": 2042,
                                "src": "3332:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                                  "typeString": "struct AttestationRequestData"
                                }
                              },
                              "id": 269,
                              "nodeType": "ArrayTypeName",
                              "src": "3332:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                                "typeString": "struct AttestationRequestData[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 277,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3400:1:1",
                              "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": 274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3371:28:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct AttestationRequestData memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 272,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 271,
                                  "name": "AttestationRequestData",
                                  "nameLocations": [
                                    "3375:22:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2042,
                                  "src": "3375:22:1"
                                },
                                "referencedDeclaration": 2042,
                                "src": "3375:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                                  "typeString": "struct AttestationRequestData"
                                }
                              },
                              "id": 273,
                              "nodeType": "ArrayTypeName",
                              "src": "3375:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                                "typeString": "struct AttestationRequestData[]"
                              }
                            }
                          },
                          "id": 276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3371:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AttestationRequestData memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3332:70:1"
                      },
                      {
                        "expression": {
                          "id": 283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 278,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 270,
                              "src": "3412:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AttestationRequestData memory[] memory"
                              }
                            },
                            "id": 280,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3417:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3412:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                              "typeString": "struct AttestationRequestData memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 281,
                              "name": "delegatedRequest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 257,
                              "src": "3422:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_calldata_ptr",
                                "typeString": "struct DelegatedAttestationRequest calldata"
                              }
                            },
                            "id": 282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3439:4:1",
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2055,
                            "src": "3422:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AttestationRequestData_$2042_calldata_ptr",
                              "typeString": "struct AttestationRequestData calldata"
                            }
                          },
                          "src": "3412:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                            "typeString": "struct AttestationRequestData memory"
                          }
                        },
                        "id": 284,
                        "nodeType": "ExpressionStatement",
                        "src": "3412:31:1"
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 286,
                                    "name": "delegatedRequest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 257,
                                    "src": "3469:16:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_calldata_ptr",
                                      "typeString": "struct DelegatedAttestationRequest calldata"
                                    }
                                  },
                                  "id": 287,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3486:6:1",
                                  "memberName": "schema",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2052,
                                  "src": "3469:23:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 288,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 270,
                                  "src": "3494:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct AttestationRequestData memory[] memory"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 289,
                                    "name": "delegatedRequest",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 257,
                                    "src": "3500:16:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_calldata_ptr",
                                      "typeString": "struct DelegatedAttestationRequest calldata"
                                    }
                                  },
                                  "id": 290,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3517:8:1",
                                  "memberName": "attester",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2060,
                                  "src": "3500:25:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 291,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "3527:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 292,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3531:5:1",
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "src": "3527:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "hexValue": "74727565",
                                  "id": 293,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3538:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct AttestationRequestData memory[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "id": 285,
                                "name": "_attest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1307,
                                "src": "3461:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_uint256_$_t_bool_$returns$_t_struct$_AttestationsResult_$147_memory_ptr_$",
                                  "typeString": "function (bytes32,struct AttestationRequestData memory[] memory,address,uint256,bool) returns (struct EAS.AttestationsResult memory)"
                                }
                              },
                              "id": 294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3461:82:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                "typeString": "struct EAS.AttestationsResult memory"
                              }
                            },
                            "id": 295,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3544:4:1",
                            "memberName": "uids",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 146,
                            "src": "3461:87:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "id": 297,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3549:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3461:90:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 261,
                        "id": 298,
                        "nodeType": "Return",
                        "src": "3454:97:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 254,
                    "nodeType": "StructuredDocumentation",
                    "src": "3123:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "3c042715",
                  "id": 300,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "attestByDelegation",
                  "nameLocation": "3157:18:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 257,
                        "mutability": "mutable",
                        "name": "delegatedRequest",
                        "nameLocation": "3222:16:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 300,
                        "src": "3185:53:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_calldata_ptr",
                          "typeString": "struct DelegatedAttestationRequest"
                        },
                        "typeName": {
                          "id": 256,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 255,
                            "name": "DelegatedAttestationRequest",
                            "nameLocations": [
                              "3185:27:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2063,
                            "src": "3185:27:1"
                          },
                          "referencedDeclaration": 2063,
                          "src": "3185:27:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_storage_ptr",
                            "typeString": "struct DelegatedAttestationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3175:69:1"
                  },
                  "returnParameters": {
                    "id": 261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 260,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 300,
                        "src": "3271:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 259,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3271:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3270:9:1"
                  },
                  "scope": 2019,
                  "src": "3148:410:1",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2215
                  ],
                  "body": {
                    "id": 420,
                    "nodeType": "Block",
                    "src": "3704:2200:1",
                    "statements": [
                      {
                        "assignments": [
                          312
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 312,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "3894:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 420,
                            "src": "3886:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 311,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3886:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 315,
                        "initialValue": {
                          "expression": {
                            "id": 313,
                            "name": "multiRequests",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 305,
                            "src": "3903:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MultiAttestationRequest_$2071_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct MultiAttestationRequest calldata[] calldata"
                            }
                          },
                          "id": 314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3917:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3903:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3886:37:1"
                      },
                      {
                        "assignments": [
                          321
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 321,
                            "mutability": "mutable",
                            "name": "totalUIDs",
                            "nameLocation": "3952:9:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 420,
                            "src": "3933:28:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes32[][]"
                            },
                            "typeName": {
                              "baseType": {
                                "baseType": {
                                  "id": 318,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3933:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 319,
                                "nodeType": "ArrayTypeName",
                                "src": "3933:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              },
                              "id": 320,
                              "nodeType": "ArrayTypeName",
                              "src": "3933:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_storage_$dyn_storage_ptr",
                                "typeString": "bytes32[][]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 328,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 326,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 312,
                              "src": "3980:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3964:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes32[] memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "baseType": {
                                  "id": 322,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3968:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 323,
                                "nodeType": "ArrayTypeName",
                                "src": "3968:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              },
                              "id": 324,
                              "nodeType": "ArrayTypeName",
                              "src": "3968:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_storage_$dyn_storage_ptr",
                                "typeString": "bytes32[][]"
                              }
                            }
                          },
                          "id": 327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3964:23:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3933:54:1"
                      },
                      {
                        "assignments": [
                          330
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 330,
                            "mutability": "mutable",
                            "name": "totalUIDCount",
                            "nameLocation": "4005:13:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 420,
                            "src": "3997:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 329,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3997:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 332,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4021:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3997:25:1"
                      },
                      {
                        "assignments": [
                          334
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 334,
                            "mutability": "mutable",
                            "name": "availableValue",
                            "nameLocation": "4444:14:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 420,
                            "src": "4436:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 333,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4436:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 337,
                        "initialValue": {
                          "expression": {
                            "id": 335,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "4461:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4465:5:1",
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "4461:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4436:34:1"
                      },
                      {
                        "body": {
                          "id": 413,
                          "nodeType": "Block",
                          "src": "4534:1234:1",
                          "statements": [
                            {
                              "assignments": [
                                352
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 352,
                                  "mutability": "mutable",
                                  "name": "last",
                                  "nameLocation": "4831:4:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 413,
                                  "src": "4826:9:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 351,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4826:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 353,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4826:9:1"
                            },
                            {
                              "id": 362,
                              "nodeType": "UncheckedBlock",
                              "src": "4849:65:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 360,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 354,
                                      "name": "last",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 352,
                                      "src": "4877:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 359,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 355,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 339,
                                        "src": "4884:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 358,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 356,
                                          "name": "length",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 312,
                                          "src": "4889:6:1",
                                          "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": "4898:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "4889:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4884:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4877:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 361,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4877:22:1"
                                }
                              ]
                            },
                            {
                              "assignments": [
                                365
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 365,
                                  "mutability": "mutable",
                                  "name": "multiRequest",
                                  "nameLocation": "5019:12:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 413,
                                  "src": "4986:45:1",
                                  "stateVariable": false,
                                  "storageLocation": "calldata",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MultiAttestationRequest_$2071_calldata_ptr",
                                    "typeString": "struct MultiAttestationRequest"
                                  },
                                  "typeName": {
                                    "id": 364,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 363,
                                      "name": "MultiAttestationRequest",
                                      "nameLocations": [
                                        "4986:23:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 2071,
                                      "src": "4986:23:1"
                                    },
                                    "referencedDeclaration": 2071,
                                    "src": "4986:23:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MultiAttestationRequest_$2071_storage_ptr",
                                      "typeString": "struct MultiAttestationRequest"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 369,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 366,
                                  "name": "multiRequests",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 305,
                                  "src": "5034:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_MultiAttestationRequest_$2071_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct MultiAttestationRequest calldata[] calldata"
                                  }
                                },
                                "id": 368,
                                "indexExpression": {
                                  "id": 367,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 339,
                                  "src": "5048:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5034:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MultiAttestationRequest_$2071_calldata_ptr",
                                  "typeString": "struct MultiAttestationRequest calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4986:64:1"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "expression": {
                                      "id": 370,
                                      "name": "multiRequest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 365,
                                      "src": "5114:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MultiAttestationRequest_$2071_calldata_ptr",
                                        "typeString": "struct MultiAttestationRequest calldata"
                                      }
                                    },
                                    "id": 371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5127:4:1",
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2070,
                                    "src": "5114:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct AttestationRequestData calldata[] calldata"
                                    }
                                  },
                                  "id": 372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5132:6:1",
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "5114:24:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 373,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5142:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "5114:29:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 379,
                              "nodeType": "IfStatement",
                              "src": "5110:90:1",
                              "trueBody": {
                                "id": 378,
                                "nodeType": "Block",
                                "src": "5145:55:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 375,
                                        "name": "InvalidLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15,
                                        "src": "5170:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 376,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5170:15:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 377,
                                    "nodeType": "RevertStatement",
                                    "src": "5163:22:1"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                382
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 382,
                                  "mutability": "mutable",
                                  "name": "res",
                                  "nameLocation": "5240:3:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 413,
                                  "src": "5214:29:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                    "typeString": "struct EAS.AttestationsResult"
                                  },
                                  "typeName": {
                                    "id": 381,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 380,
                                      "name": "AttestationsResult",
                                      "nameLocations": [
                                        "5214:18:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 147,
                                      "src": "5214:18:1"
                                    },
                                    "referencedDeclaration": 147,
                                    "src": "5214:18:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationsResult_$147_storage_ptr",
                                      "typeString": "struct EAS.AttestationsResult"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 393,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 384,
                                      "name": "multiRequest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 365,
                                      "src": "5271:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MultiAttestationRequest_$2071_calldata_ptr",
                                        "typeString": "struct MultiAttestationRequest calldata"
                                      }
                                    },
                                    "id": 385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5284:6:1",
                                    "memberName": "schema",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2066,
                                    "src": "5271:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 386,
                                      "name": "multiRequest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 365,
                                      "src": "5308:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MultiAttestationRequest_$2071_calldata_ptr",
                                        "typeString": "struct MultiAttestationRequest calldata"
                                      }
                                    },
                                    "id": 387,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5321:4:1",
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2070,
                                    "src": "5308:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct AttestationRequestData calldata[] calldata"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 388,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5343:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 389,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5347:6:1",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5343:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 390,
                                    "name": "availableValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 334,
                                    "src": "5371:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 391,
                                    "name": "last",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 352,
                                    "src": "5403:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct AttestationRequestData calldata[] calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 383,
                                  "name": "_attest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1307,
                                  "src": "5246:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_uint256_$_t_bool_$returns$_t_struct$_AttestationsResult_$147_memory_ptr_$",
                                    "typeString": "function (bytes32,struct AttestationRequestData memory[] memory,address,uint256,bool) returns (struct EAS.AttestationsResult memory)"
                                  }
                                },
                                "id": 392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5246:175:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                  "typeString": "struct EAS.AttestationsResult memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5214:207:1"
                            },
                            {
                              "expression": {
                                "id": 397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 394,
                                  "name": "availableValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 334,
                                  "src": "5548:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 395,
                                    "name": "res",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 382,
                                    "src": "5566:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                      "typeString": "struct EAS.AttestationsResult memory"
                                    }
                                  },
                                  "id": 396,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5570:9:1",
                                  "memberName": "usedValue",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 143,
                                  "src": "5566:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5548:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 398,
                              "nodeType": "ExpressionStatement",
                              "src": "5548:31:1"
                            },
                            {
                              "expression": {
                                "id": 404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 399,
                                    "name": "totalUIDs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 321,
                                    "src": "5646:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory[] memory"
                                    }
                                  },
                                  "id": 401,
                                  "indexExpression": {
                                    "id": 400,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 339,
                                    "src": "5656:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5646:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 402,
                                    "name": "res",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 382,
                                    "src": "5661:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                      "typeString": "struct EAS.AttestationsResult memory"
                                    }
                                  },
                                  "id": 403,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5665:4:1",
                                  "memberName": "uids",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 146,
                                  "src": "5661:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "src": "5646:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 405,
                              "nodeType": "ExpressionStatement",
                              "src": "5646:23:1"
                            },
                            {
                              "id": 412,
                              "nodeType": "UncheckedBlock",
                              "src": "5683:75:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 410,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 406,
                                      "name": "totalUIDCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 330,
                                      "src": "5711:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "expression": {
                                        "expression": {
                                          "id": 407,
                                          "name": "res",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 382,
                                          "src": "5728:3:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                            "typeString": "struct EAS.AttestationsResult memory"
                                          }
                                        },
                                        "id": 408,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "5732:4:1",
                                        "memberName": "uids",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 146,
                                        "src": "5728:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 409,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5737:6:1",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "5728:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5711:32:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 411,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5711:32:1"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 342,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 339,
                            "src": "4501:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 343,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 312,
                            "src": "4505:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4501:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 414,
                        "initializationExpression": {
                          "assignments": [
                            339
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 339,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "4494:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 414,
                              "src": "4486:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 338,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4486:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 341,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4498:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4486:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 345,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 339,
                              "src": "4513:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 347,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 339,
                                  "src": "4530:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 346,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "4517:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4517:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4513:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 350,
                          "nodeType": "ExpressionStatement",
                          "src": "4513:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "4481:1287:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 416,
                              "name": "totalUIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 321,
                              "src": "5872:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory[] memory"
                              }
                            },
                            {
                              "id": 417,
                              "name": "totalUIDCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 330,
                              "src": "5883:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 415,
                            "name": "_mergeUIDs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2018,
                            "src": "5861:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                              "typeString": "function (bytes32[] memory[] memory,uint256) pure returns (bytes32[] memory)"
                            }
                          },
                          "id": 418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5861:36:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "functionReturnParameters": 310,
                        "id": 419,
                        "nodeType": "Return",
                        "src": "5854:43:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 301,
                    "nodeType": "StructuredDocumentation",
                    "src": "3564:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "44adc90e",
                  "id": 421,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiAttest",
                  "nameLocation": "3598:11:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 305,
                        "mutability": "mutable",
                        "name": "multiRequests",
                        "nameLocation": "3645:13:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 421,
                        "src": "3610:48:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MultiAttestationRequest_$2071_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct MultiAttestationRequest[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 303,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 302,
                              "name": "MultiAttestationRequest",
                              "nameLocations": [
                                "3610:23:1"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2071,
                              "src": "3610:23:1"
                            },
                            "referencedDeclaration": 2071,
                            "src": "3610:23:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MultiAttestationRequest_$2071_storage_ptr",
                              "typeString": "struct MultiAttestationRequest"
                            }
                          },
                          "id": 304,
                          "nodeType": "ArrayTypeName",
                          "src": "3610:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_MultiAttestationRequest_$2071_storage_$dyn_storage_ptr",
                            "typeString": "struct MultiAttestationRequest[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3609:50:1"
                  },
                  "returnParameters": {
                    "id": 310,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 309,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 421,
                        "src": "3686:16:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 307,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3686:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 308,
                          "nodeType": "ArrayTypeName",
                          "src": "3686:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3685:18:1"
                  },
                  "scope": 2019,
                  "src": "3589:2315:1",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2226
                  ],
                  "body": {
                    "id": 590,
                    "nodeType": "Block",
                    "src": "6094:3055:1",
                    "statements": [
                      {
                        "assignments": [
                          433
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 433,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "6284:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 590,
                            "src": "6276:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 432,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6276:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 436,
                        "initialValue": {
                          "expression": {
                            "id": 434,
                            "name": "multiDelegatedRequests",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 426,
                            "src": "6293:22:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct MultiDelegatedAttestationRequest calldata[] calldata"
                            }
                          },
                          "id": 435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6316:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6293:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6276:46:1"
                      },
                      {
                        "assignments": [
                          442
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 442,
                            "mutability": "mutable",
                            "name": "totalUIDs",
                            "nameLocation": "6351:9:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 590,
                            "src": "6332:28:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes32[][]"
                            },
                            "typeName": {
                              "baseType": {
                                "baseType": {
                                  "id": 439,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6332:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 440,
                                "nodeType": "ArrayTypeName",
                                "src": "6332:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              },
                              "id": 441,
                              "nodeType": "ArrayTypeName",
                              "src": "6332:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_storage_$dyn_storage_ptr",
                                "typeString": "bytes32[][]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 449,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 447,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 433,
                              "src": "6379:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "6363:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes32[] memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "baseType": {
                                  "id": 443,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6367:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 444,
                                "nodeType": "ArrayTypeName",
                                "src": "6367:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              },
                              "id": 445,
                              "nodeType": "ArrayTypeName",
                              "src": "6367:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_storage_$dyn_storage_ptr",
                                "typeString": "bytes32[][]"
                              }
                            }
                          },
                          "id": 448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6363:23:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6332:54:1"
                      },
                      {
                        "assignments": [
                          451
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 451,
                            "mutability": "mutable",
                            "name": "totalUIDCount",
                            "nameLocation": "6404:13:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 590,
                            "src": "6396:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 450,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6396:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 453,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6420:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6396:25:1"
                      },
                      {
                        "assignments": [
                          455
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 455,
                            "mutability": "mutable",
                            "name": "availableValue",
                            "nameLocation": "6843:14:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 590,
                            "src": "6835:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 454,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6835:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 458,
                        "initialValue": {
                          "expression": {
                            "id": 456,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "6860:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "6864:5:1",
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "6860:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6835:34:1"
                      },
                      {
                        "body": {
                          "id": 583,
                          "nodeType": "Block",
                          "src": "6933:2080:1",
                          "statements": [
                            {
                              "assignments": [
                                473
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 473,
                                  "mutability": "mutable",
                                  "name": "last",
                                  "nameLocation": "7230:4:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 583,
                                  "src": "7225:9:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 472,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7225:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 474,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7225:9:1"
                            },
                            {
                              "id": 483,
                              "nodeType": "UncheckedBlock",
                              "src": "7248:65:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 481,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 475,
                                      "name": "last",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 473,
                                      "src": "7276:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 480,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 476,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 460,
                                        "src": "7283:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 479,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 477,
                                          "name": "length",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 433,
                                          "src": "7288:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 478,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7297:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "7288:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7283:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "7276:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 482,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7276:22:1"
                                }
                              ]
                            },
                            {
                              "assignments": [
                                486
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 486,
                                  "mutability": "mutable",
                                  "name": "multiDelegatedRequest",
                                  "nameLocation": "7369:21:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 583,
                                  "src": "7327:63:1",
                                  "stateVariable": false,
                                  "storageLocation": "calldata",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                    "typeString": "struct MultiDelegatedAttestationRequest"
                                  },
                                  "typeName": {
                                    "id": 485,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 484,
                                      "name": "MultiDelegatedAttestationRequest",
                                      "nameLocations": [
                                        "7327:32:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 2087,
                                      "src": "7327:32:1"
                                    },
                                    "referencedDeclaration": 2087,
                                    "src": "7327:32:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_storage_ptr",
                                      "typeString": "struct MultiDelegatedAttestationRequest"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 490,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 487,
                                  "name": "multiDelegatedRequests",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 426,
                                  "src": "7393:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct MultiDelegatedAttestationRequest calldata[] calldata"
                                  }
                                },
                                "id": 489,
                                "indexExpression": {
                                  "id": 488,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 460,
                                  "src": "7416:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7393:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                  "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7327:91:1"
                            },
                            {
                              "assignments": [
                                495
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 495,
                                  "mutability": "mutable",
                                  "name": "data",
                                  "nameLocation": "7466:4:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 583,
                                  "src": "7432:38:1",
                                  "stateVariable": false,
                                  "storageLocation": "calldata",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct AttestationRequestData[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 493,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 492,
                                        "name": "AttestationRequestData",
                                        "nameLocations": [
                                          "7432:22:1"
                                        ],
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2042,
                                        "src": "7432:22:1"
                                      },
                                      "referencedDeclaration": 2042,
                                      "src": "7432:22:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                                        "typeString": "struct AttestationRequestData"
                                      }
                                    },
                                    "id": 494,
                                    "nodeType": "ArrayTypeName",
                                    "src": "7432:24:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                                      "typeString": "struct AttestationRequestData[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 498,
                              "initialValue": {
                                "expression": {
                                  "id": 496,
                                  "name": "multiDelegatedRequest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 486,
                                  "src": "7473:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                    "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                  }
                                },
                                "id": 497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7495:4:1",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2078,
                                "src": "7473:26:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct AttestationRequestData calldata[] calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7432:67:1"
                            },
                            {
                              "assignments": [
                                500
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 500,
                                  "mutability": "mutable",
                                  "name": "dataLength",
                                  "nameLocation": "7572:10:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 583,
                                  "src": "7564:18:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 499,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7564:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 503,
                              "initialValue": {
                                "expression": {
                                  "id": 501,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 495,
                                  "src": "7585:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct AttestationRequestData calldata[] calldata"
                                  }
                                },
                                "id": 502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "7590:6:1",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "7585:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7564:32:1"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 512,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 506,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 504,
                                    "name": "dataLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 500,
                                    "src": "7614:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 505,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7628:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "7614:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 511,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 507,
                                    "name": "dataLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 500,
                                    "src": "7633:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 508,
                                        "name": "multiDelegatedRequest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 486,
                                        "src": "7647:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                          "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                        }
                                      },
                                      "id": 509,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "7669:10:1",
                                      "memberName": "signatures",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2082,
                                      "src": "7647:32:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Signature_$27_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct Signature calldata[] calldata"
                                      }
                                    },
                                    "id": 510,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "7680:6:1",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "7647:39:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7633:53:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "7614:72:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 517,
                              "nodeType": "IfStatement",
                              "src": "7610:133:1",
                              "trueBody": {
                                "id": 516,
                                "nodeType": "Block",
                                "src": "7688:55:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 513,
                                        "name": "InvalidLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15,
                                        "src": "7713:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 514,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7713:15:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 515,
                                    "nodeType": "RevertStatement",
                                    "src": "7706:22:1"
                                  }
                                ]
                              }
                            },
                            {
                              "body": {
                                "id": 549,
                                "nodeType": "Block",
                                "src": "7929:442:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 533,
                                                "name": "multiDelegatedRequest",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 486,
                                                "src": "8044:21:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                                  "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                                }
                                              },
                                              "id": 534,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "8066:6:1",
                                              "memberName": "schema",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2074,
                                              "src": "8044:28:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "baseExpression": {
                                                "id": 535,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 495,
                                                "src": "8104:4:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                                  "typeString": "struct AttestationRequestData calldata[] calldata"
                                                }
                                              },
                                              "id": 537,
                                              "indexExpression": {
                                                "id": 536,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 519,
                                                "src": "8109:1:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "8104:7:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AttestationRequestData_$2042_calldata_ptr",
                                                "typeString": "struct AttestationRequestData calldata"
                                              }
                                            },
                                            {
                                              "baseExpression": {
                                                "expression": {
                                                  "id": 538,
                                                  "name": "multiDelegatedRequest",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 486,
                                                  "src": "8148:21:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                                    "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                                  }
                                                },
                                                "id": 539,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "8170:10:1",
                                                "memberName": "signatures",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2082,
                                                "src": "8148:32:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_struct$_Signature_$27_calldata_ptr_$dyn_calldata_ptr",
                                                  "typeString": "struct Signature calldata[] calldata"
                                                }
                                              },
                                              "id": 541,
                                              "indexExpression": {
                                                "id": 540,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 519,
                                                "src": "8181:1:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "8148:35:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Signature_$27_calldata_ptr",
                                                "typeString": "struct Signature calldata"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 542,
                                                "name": "multiDelegatedRequest",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 486,
                                                "src": "8219:21:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                                  "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                                }
                                              },
                                              "id": 543,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "8241:8:1",
                                              "memberName": "attester",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2084,
                                              "src": "8219:30:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 544,
                                                "name": "multiDelegatedRequest",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 486,
                                                "src": "8285:21:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                                  "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                                }
                                              },
                                              "id": 545,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "8307:8:1",
                                              "memberName": "deadline",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2086,
                                              "src": "8285:30:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_struct$_AttestationRequestData_$2042_calldata_ptr",
                                                "typeString": "struct AttestationRequestData calldata"
                                              },
                                              {
                                                "typeIdentifier": "t_struct$_Signature_$27_calldata_ptr",
                                                "typeString": "struct Signature calldata"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            ],
                                            "id": 532,
                                            "name": "DelegatedAttestationRequest",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2063,
                                            "src": "7982:27:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_struct$_DelegatedAttestationRequest_$2063_storage_ptr_$",
                                              "typeString": "type(struct DelegatedAttestationRequest storage pointer)"
                                            }
                                          },
                                          "id": 546,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "structConstructorCall",
                                          "lValueRequested": false,
                                          "nameLocations": [
                                            "8036:6:1",
                                            "8098:4:1",
                                            "8137:9:1",
                                            "8209:8:1",
                                            "8275:8:1"
                                          ],
                                          "names": [
                                            "schema",
                                            "data",
                                            "signature",
                                            "attester",
                                            "deadline"
                                          ],
                                          "nodeType": "FunctionCall",
                                          "src": "7982:356:1",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                            "typeString": "struct DelegatedAttestationRequest memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                            "typeString": "struct DelegatedAttestationRequest memory"
                                          }
                                        ],
                                        "id": 531,
                                        "name": "_verifyAttest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2826,
                                        "src": "7947:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_DelegatedAttestationRequest_$2063_memory_ptr_$returns$__$",
                                          "typeString": "function (struct DelegatedAttestationRequest memory)"
                                        }
                                      },
                                      "id": 547,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7947:409:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 548,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7947:409:1"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 522,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 519,
                                  "src": "7892:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 523,
                                  "name": "dataLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 500,
                                  "src": "7896:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7892:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 550,
                              "initializationExpression": {
                                "assignments": [
                                  519
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 519,
                                    "mutability": "mutable",
                                    "name": "j",
                                    "nameLocation": "7885:1:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 550,
                                    "src": "7877:9:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 518,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7877:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 521,
                                "initialValue": {
                                  "hexValue": "30",
                                  "id": 520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7889:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "7877:13:1"
                              },
                              "isSimpleCounterLoop": false,
                              "loopExpression": {
                                "expression": {
                                  "id": 529,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 525,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 519,
                                    "src": "7908:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 527,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 519,
                                        "src": "7925:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 526,
                                      "name": "uncheckedInc",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 65,
                                      "src": "7912:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 528,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7912:15:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7908:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 530,
                                "nodeType": "ExpressionStatement",
                                "src": "7908:19:1"
                              },
                              "nodeType": "ForStatement",
                              "src": "7872:499:1"
                            },
                            {
                              "assignments": [
                                553
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 553,
                                  "mutability": "mutable",
                                  "name": "res",
                                  "nameLocation": "8469:3:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 583,
                                  "src": "8443:29:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                    "typeString": "struct EAS.AttestationsResult"
                                  },
                                  "typeName": {
                                    "id": 552,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 551,
                                      "name": "AttestationsResult",
                                      "nameLocations": [
                                        "8443:18:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 147,
                                      "src": "8443:18:1"
                                    },
                                    "referencedDeclaration": 147,
                                    "src": "8443:18:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationsResult_$147_storage_ptr",
                                      "typeString": "struct EAS.AttestationsResult"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 563,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 555,
                                      "name": "multiDelegatedRequest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 486,
                                      "src": "8500:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                        "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                      }
                                    },
                                    "id": 556,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8522:6:1",
                                    "memberName": "schema",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2074,
                                    "src": "8500:28:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 557,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 495,
                                    "src": "8546:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct AttestationRequestData calldata[] calldata"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 558,
                                      "name": "multiDelegatedRequest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 486,
                                      "src": "8568:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr",
                                        "typeString": "struct MultiDelegatedAttestationRequest calldata"
                                      }
                                    },
                                    "id": 559,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "8590:8:1",
                                    "memberName": "attester",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2084,
                                    "src": "8568:30:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 560,
                                    "name": "availableValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 455,
                                    "src": "8616:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 561,
                                    "name": "last",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 473,
                                    "src": "8648:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct AttestationRequestData calldata[] calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 554,
                                  "name": "_attest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1307,
                                  "src": "8475:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_uint256_$_t_bool_$returns$_t_struct$_AttestationsResult_$147_memory_ptr_$",
                                    "typeString": "function (bytes32,struct AttestationRequestData memory[] memory,address,uint256,bool) returns (struct EAS.AttestationsResult memory)"
                                  }
                                },
                                "id": 562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8475:191:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                  "typeString": "struct EAS.AttestationsResult memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8443:223:1"
                            },
                            {
                              "expression": {
                                "id": 567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 564,
                                  "name": "availableValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 455,
                                  "src": "8793:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 565,
                                    "name": "res",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 553,
                                    "src": "8811:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                      "typeString": "struct EAS.AttestationsResult memory"
                                    }
                                  },
                                  "id": 566,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "8815:9:1",
                                  "memberName": "usedValue",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 143,
                                  "src": "8811:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8793:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 568,
                              "nodeType": "ExpressionStatement",
                              "src": "8793:31:1"
                            },
                            {
                              "expression": {
                                "id": 574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 569,
                                    "name": "totalUIDs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 442,
                                    "src": "8891:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory[] memory"
                                    }
                                  },
                                  "id": 571,
                                  "indexExpression": {
                                    "id": 570,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 460,
                                    "src": "8901:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "8891:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 572,
                                    "name": "res",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 553,
                                    "src": "8906:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                      "typeString": "struct EAS.AttestationsResult memory"
                                    }
                                  },
                                  "id": 573,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "8910:4:1",
                                  "memberName": "uids",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 146,
                                  "src": "8906:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "src": "8891:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "id": 575,
                              "nodeType": "ExpressionStatement",
                              "src": "8891:23:1"
                            },
                            {
                              "id": 582,
                              "nodeType": "UncheckedBlock",
                              "src": "8928:75:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 580,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 576,
                                      "name": "totalUIDCount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 451,
                                      "src": "8956:13:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "expression": {
                                        "expression": {
                                          "id": 577,
                                          "name": "res",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 553,
                                          "src": "8973:3:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                            "typeString": "struct EAS.AttestationsResult memory"
                                          }
                                        },
                                        "id": 578,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "8977:4:1",
                                        "memberName": "uids",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 146,
                                        "src": "8973:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 579,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "8982:6:1",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "8973:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8956:32:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 581,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8956:32:1"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 463,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 460,
                            "src": "6900:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 464,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 433,
                            "src": "6904:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6900:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 584,
                        "initializationExpression": {
                          "assignments": [
                            460
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 460,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "6893:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 584,
                              "src": "6885:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 459,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6885:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 462,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6897:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6885:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 466,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 460,
                              "src": "6912:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 468,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 460,
                                  "src": "6929:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 467,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "6916:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6916:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6912:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 471,
                          "nodeType": "ExpressionStatement",
                          "src": "6912:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "6880:2133:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 586,
                              "name": "totalUIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 442,
                              "src": "9117:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory[] memory"
                              }
                            },
                            {
                              "id": 587,
                              "name": "totalUIDCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 451,
                              "src": "9128:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 585,
                            "name": "_mergeUIDs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2018,
                            "src": "9106:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                              "typeString": "function (bytes32[] memory[] memory,uint256) pure returns (bytes32[] memory)"
                            }
                          },
                          "id": 588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9106:36:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "functionReturnParameters": 431,
                        "id": 589,
                        "nodeType": "Return",
                        "src": "9099:43:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 422,
                    "nodeType": "StructuredDocumentation",
                    "src": "5910:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "95411525",
                  "id": 591,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiAttestByDelegation",
                  "nameLocation": "5944:23:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 426,
                        "mutability": "mutable",
                        "name": "multiDelegatedRequests",
                        "nameLocation": "6021:22:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 591,
                        "src": "5977:66:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct MultiDelegatedAttestationRequest[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 424,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 423,
                              "name": "MultiDelegatedAttestationRequest",
                              "nameLocations": [
                                "5977:32:1"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2087,
                              "src": "5977:32:1"
                            },
                            "referencedDeclaration": 2087,
                            "src": "5977:32:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_storage_ptr",
                              "typeString": "struct MultiDelegatedAttestationRequest"
                            }
                          },
                          "id": 425,
                          "nodeType": "ArrayTypeName",
                          "src": "5977:34:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_MultiDelegatedAttestationRequest_$2087_storage_$dyn_storage_ptr",
                            "typeString": "struct MultiDelegatedAttestationRequest[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5967:82:1"
                  },
                  "returnParameters": {
                    "id": 431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 430,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 591,
                        "src": "6076:16:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 428,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "6076:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 429,
                          "nodeType": "ArrayTypeName",
                          "src": "6076:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6075:18:1"
                  },
                  "scope": 2019,
                  "src": "5935:3214:1",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2233
                  ],
                  "body": {
                    "id": 628,
                    "nodeType": "Block",
                    "src": "9249:186:1",
                    "statements": [
                      {
                        "assignments": [
                          602
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 602,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "9290:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 628,
                            "src": "9259:35:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct RevocationRequestData[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 600,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 599,
                                  "name": "RevocationRequestData",
                                  "nameLocations": [
                                    "9259:21:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2093,
                                  "src": "9259:21:1"
                                },
                                "referencedDeclaration": 2093,
                                "src": "9259:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                                  "typeString": "struct RevocationRequestData"
                                }
                              },
                              "id": 601,
                              "nodeType": "ArrayTypeName",
                              "src": "9259:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                                "typeString": "struct RevocationRequestData[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 609,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9325:1:1",
                              "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": 606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "9297:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct RevocationRequestData memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 604,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 603,
                                  "name": "RevocationRequestData",
                                  "nameLocations": [
                                    "9301:21:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2093,
                                  "src": "9301:21:1"
                                },
                                "referencedDeclaration": 2093,
                                "src": "9301:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                                  "typeString": "struct RevocationRequestData"
                                }
                              },
                              "id": 605,
                              "nodeType": "ArrayTypeName",
                              "src": "9301:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                                "typeString": "struct RevocationRequestData[]"
                              }
                            }
                          },
                          "id": 608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9297:30:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct RevocationRequestData memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9259:68:1"
                      },
                      {
                        "expression": {
                          "id": 615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 610,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 602,
                              "src": "9337:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct RevocationRequestData memory[] memory"
                              }
                            },
                            "id": 612,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9342:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9337:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                              "typeString": "struct RevocationRequestData memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 613,
                              "name": "request",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 595,
                              "src": "9347:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RevocationRequest_$2100_calldata_ptr",
                                "typeString": "struct RevocationRequest calldata"
                              }
                            },
                            "id": 614,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9355:4:1",
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2099,
                            "src": "9347:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RevocationRequestData_$2093_calldata_ptr",
                              "typeString": "struct RevocationRequestData calldata"
                            }
                          },
                          "src": "9337:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                            "typeString": "struct RevocationRequestData memory"
                          }
                        },
                        "id": 616,
                        "nodeType": "ExpressionStatement",
                        "src": "9337:22:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 618,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 595,
                                "src": "9378:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RevocationRequest_$2100_calldata_ptr",
                                  "typeString": "struct RevocationRequest calldata"
                                }
                              },
                              "id": 619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9386:6:1",
                              "memberName": "schema",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2096,
                              "src": "9378:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 620,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 602,
                              "src": "9394:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct RevocationRequestData memory[] memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 621,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9400:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9404:6:1",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "9400:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 623,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9412:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9416:5:1",
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "9412:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9423:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct RevocationRequestData memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 617,
                            "name": "_revoke",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1485,
                            "src": "9370:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,struct RevocationRequestData memory[] memory,address,uint256,bool) returns (uint256)"
                            }
                          },
                          "id": 626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9370:58:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 627,
                        "nodeType": "ExpressionStatement",
                        "src": "9370:58:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 592,
                    "nodeType": "StructuredDocumentation",
                    "src": "9155:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "46926267",
                  "id": 629,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revoke",
                  "nameLocation": "9189:6:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 596,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 595,
                        "mutability": "mutable",
                        "name": "request",
                        "nameLocation": "9223:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 629,
                        "src": "9196:34:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RevocationRequest_$2100_calldata_ptr",
                          "typeString": "struct RevocationRequest"
                        },
                        "typeName": {
                          "id": 594,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 593,
                            "name": "RevocationRequest",
                            "nameLocations": [
                              "9196:17:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2100,
                            "src": "9196:17:1"
                          },
                          "referencedDeclaration": 2100,
                          "src": "9196:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RevocationRequest_$2100_storage_ptr",
                            "typeString": "struct RevocationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9195:36:1"
                  },
                  "returnParameters": {
                    "id": 597,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9249:0:1"
                  },
                  "scope": 2019,
                  "src": "9180:255:1",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2240
                  ],
                  "body": {
                    "id": 670,
                    "nodeType": "Block",
                    "src": "9565:260:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 637,
                              "name": "delegatedRequest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 633,
                              "src": "9589:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_calldata_ptr",
                                "typeString": "struct DelegatedRevocationRequest calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_calldata_ptr",
                                "typeString": "struct DelegatedRevocationRequest calldata"
                              }
                            ],
                            "id": 636,
                            "name": "_verifyRevoke",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2908,
                            "src": "9575:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_DelegatedRevocationRequest_$2114_memory_ptr_$returns$__$",
                              "typeString": "function (struct DelegatedRevocationRequest memory)"
                            }
                          },
                          "id": 638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9575:31:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 639,
                        "nodeType": "ExpressionStatement",
                        "src": "9575:31:1"
                      },
                      {
                        "assignments": [
                          644
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 644,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "9648:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 670,
                            "src": "9617:35:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct RevocationRequestData[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 642,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 641,
                                  "name": "RevocationRequestData",
                                  "nameLocations": [
                                    "9617:21:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2093,
                                  "src": "9617:21:1"
                                },
                                "referencedDeclaration": 2093,
                                "src": "9617:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                                  "typeString": "struct RevocationRequestData"
                                }
                              },
                              "id": 643,
                              "nodeType": "ArrayTypeName",
                              "src": "9617:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                                "typeString": "struct RevocationRequestData[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 651,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9683:1:1",
                              "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": 648,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "9655:27:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct RevocationRequestData memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 646,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 645,
                                  "name": "RevocationRequestData",
                                  "nameLocations": [
                                    "9659:21:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2093,
                                  "src": "9659:21:1"
                                },
                                "referencedDeclaration": 2093,
                                "src": "9659:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                                  "typeString": "struct RevocationRequestData"
                                }
                              },
                              "id": 647,
                              "nodeType": "ArrayTypeName",
                              "src": "9659:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                                "typeString": "struct RevocationRequestData[]"
                              }
                            }
                          },
                          "id": 650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9655:30:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct RevocationRequestData memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9617:68:1"
                      },
                      {
                        "expression": {
                          "id": 657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 652,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 644,
                              "src": "9695:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct RevocationRequestData memory[] memory"
                              }
                            },
                            "id": 654,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 653,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9700:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9695:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                              "typeString": "struct RevocationRequestData memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 655,
                              "name": "delegatedRequest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 633,
                              "src": "9705:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_calldata_ptr",
                                "typeString": "struct DelegatedRevocationRequest calldata"
                              }
                            },
                            "id": 656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "9722:4:1",
                            "memberName": "data",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2106,
                            "src": "9705:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RevocationRequestData_$2093_calldata_ptr",
                              "typeString": "struct RevocationRequestData calldata"
                            }
                          },
                          "src": "9695:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                            "typeString": "struct RevocationRequestData memory"
                          }
                        },
                        "id": 658,
                        "nodeType": "ExpressionStatement",
                        "src": "9695:31:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 660,
                                "name": "delegatedRequest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 633,
                                "src": "9745:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_calldata_ptr",
                                  "typeString": "struct DelegatedRevocationRequest calldata"
                                }
                              },
                              "id": 661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9762:6:1",
                              "memberName": "schema",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2103,
                              "src": "9745:23:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 662,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 644,
                              "src": "9770:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct RevocationRequestData memory[] memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 663,
                                "name": "delegatedRequest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 633,
                                "src": "9776:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_calldata_ptr",
                                  "typeString": "struct DelegatedRevocationRequest calldata"
                                }
                              },
                              "id": 664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9793:7:1",
                              "memberName": "revoker",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2111,
                              "src": "9776:24:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 665,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9802:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 666,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9806:5:1",
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "9802:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9813:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct RevocationRequestData memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 659,
                            "name": "_revoke",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1485,
                            "src": "9737:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,struct RevocationRequestData memory[] memory,address,uint256,bool) returns (uint256)"
                            }
                          },
                          "id": 668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9737:81:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 669,
                        "nodeType": "ExpressionStatement",
                        "src": "9737:81:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 630,
                    "nodeType": "StructuredDocumentation",
                    "src": "9441:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "a6d4dbc7",
                  "id": 671,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revokeByDelegation",
                  "nameLocation": "9475:18:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 633,
                        "mutability": "mutable",
                        "name": "delegatedRequest",
                        "nameLocation": "9530:16:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 671,
                        "src": "9494:52:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_calldata_ptr",
                          "typeString": "struct DelegatedRevocationRequest"
                        },
                        "typeName": {
                          "id": 632,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 631,
                            "name": "DelegatedRevocationRequest",
                            "nameLocations": [
                              "9494:26:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2114,
                            "src": "9494:26:1"
                          },
                          "referencedDeclaration": 2114,
                          "src": "9494:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_storage_ptr",
                            "typeString": "struct DelegatedRevocationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9493:54:1"
                  },
                  "returnParameters": {
                    "id": 635,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9565:0:1"
                  },
                  "scope": 2019,
                  "src": "9466:359:1",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2248
                  ],
                  "body": {
                    "id": 736,
                    "nodeType": "Block",
                    "src": "9943:1258:1",
                    "statements": [
                      {
                        "assignments": [
                          680
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 680,
                            "mutability": "mutable",
                            "name": "availableValue",
                            "nameLocation": "10364:14:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 736,
                            "src": "10356:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 679,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10356:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 683,
                        "initialValue": {
                          "expression": {
                            "id": 681,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "10381:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10385:5:1",
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "10381:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10356:34:1"
                      },
                      {
                        "assignments": [
                          685
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 685,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "10409:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 736,
                            "src": "10401:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 684,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10401:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 688,
                        "initialValue": {
                          "expression": {
                            "id": 686,
                            "name": "multiRequests",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 676,
                            "src": "10418:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MultiRevocationRequest_$2122_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct MultiRevocationRequest calldata[] calldata"
                            }
                          },
                          "id": 687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "10432:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "10418:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10401:37:1"
                      },
                      {
                        "body": {
                          "id": 734,
                          "nodeType": "Block",
                          "src": "10501:694:1",
                          "statements": [
                            {
                              "assignments": [
                                703
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 703,
                                  "mutability": "mutable",
                                  "name": "last",
                                  "nameLocation": "10798:4:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 734,
                                  "src": "10793:9:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 702,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10793:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 704,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10793:9:1"
                            },
                            {
                              "id": 713,
                              "nodeType": "UncheckedBlock",
                              "src": "10816:65:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 711,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 705,
                                      "name": "last",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 703,
                                      "src": "10844:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 710,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 706,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 690,
                                        "src": "10851:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 709,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 707,
                                          "name": "length",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 685,
                                          "src": "10856:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 708,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10865:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "10856:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10851:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "10844:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 712,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10844:22:1"
                                }
                              ]
                            },
                            {
                              "assignments": [
                                716
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 716,
                                  "mutability": "mutable",
                                  "name": "multiRequest",
                                  "nameLocation": "10927:12:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 734,
                                  "src": "10895:44:1",
                                  "stateVariable": false,
                                  "storageLocation": "calldata",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MultiRevocationRequest_$2122_calldata_ptr",
                                    "typeString": "struct MultiRevocationRequest"
                                  },
                                  "typeName": {
                                    "id": 715,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 714,
                                      "name": "MultiRevocationRequest",
                                      "nameLocations": [
                                        "10895:22:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 2122,
                                      "src": "10895:22:1"
                                    },
                                    "referencedDeclaration": 2122,
                                    "src": "10895:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MultiRevocationRequest_$2122_storage_ptr",
                                      "typeString": "struct MultiRevocationRequest"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 720,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 717,
                                  "name": "multiRequests",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 676,
                                  "src": "10942:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_MultiRevocationRequest_$2122_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct MultiRevocationRequest calldata[] calldata"
                                  }
                                },
                                "id": 719,
                                "indexExpression": {
                                  "id": 718,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 690,
                                  "src": "10956:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10942:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MultiRevocationRequest_$2122_calldata_ptr",
                                  "typeString": "struct MultiRevocationRequest calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10895:63:1"
                            },
                            {
                              "expression": {
                                "id": 732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 721,
                                  "name": "availableValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 680,
                                  "src": "11085:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 723,
                                        "name": "multiRequest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 716,
                                        "src": "11111:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_MultiRevocationRequest_$2122_calldata_ptr",
                                          "typeString": "struct MultiRevocationRequest calldata"
                                        }
                                      },
                                      "id": 724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "11124:6:1",
                                      "memberName": "schema",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2117,
                                      "src": "11111:19:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 725,
                                        "name": "multiRequest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 716,
                                        "src": "11132:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_MultiRevocationRequest_$2122_calldata_ptr",
                                          "typeString": "struct MultiRevocationRequest calldata"
                                        }
                                      },
                                      "id": 726,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "11145:4:1",
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2121,
                                      "src": "11132:17:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct RevocationRequestData calldata[] calldata"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 727,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "11151:3:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "11155:6:1",
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "11151:10:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 729,
                                      "name": "availableValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 680,
                                      "src": "11163:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 730,
                                      "name": "last",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 703,
                                      "src": "11179:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct RevocationRequestData calldata[] calldata"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 722,
                                    "name": "_revoke",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1485,
                                    "src": "11103:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (bytes32,struct RevocationRequestData memory[] memory,address,uint256,bool) returns (uint256)"
                                    }
                                  },
                                  "id": 731,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11103:81:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11085:99:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 733,
                              "nodeType": "ExpressionStatement",
                              "src": "11085:99:1"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 693,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 690,
                            "src": "10468:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 694,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 685,
                            "src": "10472:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10468:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 735,
                        "initializationExpression": {
                          "assignments": [
                            690
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 690,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "10461:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 735,
                              "src": "10453:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 689,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10453:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 692,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10465:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10453:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 696,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 690,
                              "src": "10480:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 698,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 690,
                                  "src": "10497:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 697,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "10484:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10484:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10480:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 701,
                          "nodeType": "ExpressionStatement",
                          "src": "10480:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "10448:747:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 672,
                    "nodeType": "StructuredDocumentation",
                    "src": "9831:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "4cb7e9e5",
                  "id": 737,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiRevoke",
                  "nameLocation": "9865:11:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 676,
                        "mutability": "mutable",
                        "name": "multiRequests",
                        "nameLocation": "9911:13:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 737,
                        "src": "9877:47:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MultiRevocationRequest_$2122_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct MultiRevocationRequest[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 674,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 673,
                              "name": "MultiRevocationRequest",
                              "nameLocations": [
                                "9877:22:1"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2122,
                              "src": "9877:22:1"
                            },
                            "referencedDeclaration": 2122,
                            "src": "9877:22:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MultiRevocationRequest_$2122_storage_ptr",
                              "typeString": "struct MultiRevocationRequest"
                            }
                          },
                          "id": 675,
                          "nodeType": "ArrayTypeName",
                          "src": "9877:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_MultiRevocationRequest_$2122_storage_$dyn_storage_ptr",
                            "typeString": "struct MultiRevocationRequest[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9876:49:1"
                  },
                  "returnParameters": {
                    "id": 678,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9943:0:1"
                  },
                  "scope": 2019,
                  "src": "9856:1345:1",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2256
                  ],
                  "body": {
                    "id": 861,
                    "nodeType": "Block",
                    "src": "11363:2347:1",
                    "statements": [
                      {
                        "assignments": [
                          746
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 746,
                            "mutability": "mutable",
                            "name": "availableValue",
                            "nameLocation": "11784:14:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 861,
                            "src": "11776:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 745,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11776:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 749,
                        "initialValue": {
                          "expression": {
                            "id": 747,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "11801:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11805:5:1",
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "11801:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11776:34:1"
                      },
                      {
                        "assignments": [
                          751
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 751,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "11829:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 861,
                            "src": "11821:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 750,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11821:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 754,
                        "initialValue": {
                          "expression": {
                            "id": 752,
                            "name": "multiDelegatedRequests",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 742,
                            "src": "11838:22:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_MultiDelegatedRevocationRequest_$2138_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct MultiDelegatedRevocationRequest calldata[] calldata"
                            }
                          },
                          "id": 753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "11861:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "11838:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11821:46:1"
                      },
                      {
                        "body": {
                          "id": 859,
                          "nodeType": "Block",
                          "src": "11930:1774:1",
                          "statements": [
                            {
                              "assignments": [
                                769
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 769,
                                  "mutability": "mutable",
                                  "name": "last",
                                  "nameLocation": "12227:4:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 859,
                                  "src": "12222:9:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 768,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12222:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 770,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12222:9:1"
                            },
                            {
                              "id": 779,
                              "nodeType": "UncheckedBlock",
                              "src": "12245:65:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 777,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 771,
                                      "name": "last",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 769,
                                      "src": "12273:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 776,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 772,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 756,
                                        "src": "12280:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 775,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 773,
                                          "name": "length",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 751,
                                          "src": "12285:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 774,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12294:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "12285:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12280:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "12273:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 778,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12273:22:1"
                                }
                              ]
                            },
                            {
                              "assignments": [
                                782
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 782,
                                  "mutability": "mutable",
                                  "name": "multiDelegatedRequest",
                                  "nameLocation": "12363:21:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 859,
                                  "src": "12324:60:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                    "typeString": "struct MultiDelegatedRevocationRequest"
                                  },
                                  "typeName": {
                                    "id": 781,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 780,
                                      "name": "MultiDelegatedRevocationRequest",
                                      "nameLocations": [
                                        "12324:31:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 2138,
                                      "src": "12324:31:1"
                                    },
                                    "referencedDeclaration": 2138,
                                    "src": "12324:31:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_storage_ptr",
                                      "typeString": "struct MultiDelegatedRevocationRequest"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 786,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 783,
                                  "name": "multiDelegatedRequests",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 742,
                                  "src": "12387:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_MultiDelegatedRevocationRequest_$2138_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct MultiDelegatedRevocationRequest calldata[] calldata"
                                  }
                                },
                                "id": 785,
                                "indexExpression": {
                                  "id": 784,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 756,
                                  "src": "12410:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12387:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_calldata_ptr",
                                  "typeString": "struct MultiDelegatedRevocationRequest calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12324:88:1"
                            },
                            {
                              "assignments": [
                                791
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 791,
                                  "mutability": "mutable",
                                  "name": "data",
                                  "nameLocation": "12457:4:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 859,
                                  "src": "12426:35:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct RevocationRequestData[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 789,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 788,
                                        "name": "RevocationRequestData",
                                        "nameLocations": [
                                          "12426:21:1"
                                        ],
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2093,
                                        "src": "12426:21:1"
                                      },
                                      "referencedDeclaration": 2093,
                                      "src": "12426:21:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                                        "typeString": "struct RevocationRequestData"
                                      }
                                    },
                                    "id": 790,
                                    "nodeType": "ArrayTypeName",
                                    "src": "12426:23:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                                      "typeString": "struct RevocationRequestData[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 794,
                              "initialValue": {
                                "expression": {
                                  "id": 792,
                                  "name": "multiDelegatedRequest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 782,
                                  "src": "12464:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                    "typeString": "struct MultiDelegatedRevocationRequest memory"
                                  }
                                },
                                "id": 793,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "12486:4:1",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2129,
                                "src": "12464:26:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct RevocationRequestData memory[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12426:64:1"
                            },
                            {
                              "assignments": [
                                796
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 796,
                                  "mutability": "mutable",
                                  "name": "dataLength",
                                  "nameLocation": "12563:10:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 859,
                                  "src": "12555:18:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 795,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12555:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 799,
                              "initialValue": {
                                "expression": {
                                  "id": 797,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 791,
                                  "src": "12576:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct RevocationRequestData memory[] memory"
                                  }
                                },
                                "id": 798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "12581:6:1",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "12576:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12555:32:1"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 800,
                                    "name": "dataLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 796,
                                    "src": "12605:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 801,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12619:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "12605:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 803,
                                    "name": "dataLength",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 796,
                                    "src": "12624:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 804,
                                        "name": "multiDelegatedRequest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 782,
                                        "src": "12638:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                          "typeString": "struct MultiDelegatedRevocationRequest memory"
                                        }
                                      },
                                      "id": 805,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "12660:10:1",
                                      "memberName": "signatures",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2133,
                                      "src": "12638:32:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Signature_$27_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct Signature memory[] memory"
                                      }
                                    },
                                    "id": 806,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "12671:6:1",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "12638:39:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "12624:53:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "12605:72:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 813,
                              "nodeType": "IfStatement",
                              "src": "12601:133:1",
                              "trueBody": {
                                "id": 812,
                                "nodeType": "Block",
                                "src": "12679:55:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 809,
                                        "name": "InvalidLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15,
                                        "src": "12704:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12704:15:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 811,
                                    "nodeType": "RevertStatement",
                                    "src": "12697:22:1"
                                  }
                                ]
                              }
                            },
                            {
                              "body": {
                                "id": 845,
                                "nodeType": "Block",
                                "src": "12920:439:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 829,
                                                "name": "multiDelegatedRequest",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 782,
                                                "src": "13034:21:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                                  "typeString": "struct MultiDelegatedRevocationRequest memory"
                                                }
                                              },
                                              "id": 830,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "13056:6:1",
                                              "memberName": "schema",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2125,
                                              "src": "13034:28:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "baseExpression": {
                                                "id": 831,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 791,
                                                "src": "13094:4:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                                  "typeString": "struct RevocationRequestData memory[] memory"
                                                }
                                              },
                                              "id": 833,
                                              "indexExpression": {
                                                "id": 832,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 815,
                                                "src": "13099:1:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "13094:7:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                                "typeString": "struct RevocationRequestData memory"
                                              }
                                            },
                                            {
                                              "baseExpression": {
                                                "expression": {
                                                  "id": 834,
                                                  "name": "multiDelegatedRequest",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 782,
                                                  "src": "13138:21:1",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                                    "typeString": "struct MultiDelegatedRevocationRequest memory"
                                                  }
                                                },
                                                "id": 835,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "13160:10:1",
                                                "memberName": "signatures",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2133,
                                                "src": "13138:32:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_struct$_Signature_$27_memory_ptr_$dyn_memory_ptr",
                                                  "typeString": "struct Signature memory[] memory"
                                                }
                                              },
                                              "id": 837,
                                              "indexExpression": {
                                                "id": 836,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 815,
                                                "src": "13171:1:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "13138:35:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                                                "typeString": "struct Signature memory"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 838,
                                                "name": "multiDelegatedRequest",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 782,
                                                "src": "13208:21:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                                  "typeString": "struct MultiDelegatedRevocationRequest memory"
                                                }
                                              },
                                              "id": 839,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "13230:7:1",
                                              "memberName": "revoker",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2135,
                                              "src": "13208:29:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 840,
                                                "name": "multiDelegatedRequest",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 782,
                                                "src": "13273:21:1",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                                  "typeString": "struct MultiDelegatedRevocationRequest memory"
                                                }
                                              },
                                              "id": 841,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "13295:8:1",
                                              "memberName": "deadline",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2137,
                                              "src": "13273:30:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                                "typeString": "struct RevocationRequestData memory"
                                              },
                                              {
                                                "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                                                "typeString": "struct Signature memory"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            ],
                                            "id": 828,
                                            "name": "DelegatedRevocationRequest",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2114,
                                            "src": "12973:26:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_struct$_DelegatedRevocationRequest_$2114_storage_ptr_$",
                                              "typeString": "type(struct DelegatedRevocationRequest storage pointer)"
                                            }
                                          },
                                          "id": 842,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "structConstructorCall",
                                          "lValueRequested": false,
                                          "nameLocations": [
                                            "13026:6:1",
                                            "13088:4:1",
                                            "13127:9:1",
                                            "13199:7:1",
                                            "13263:8:1"
                                          ],
                                          "names": [
                                            "schema",
                                            "data",
                                            "signature",
                                            "revoker",
                                            "deadline"
                                          ],
                                          "nodeType": "FunctionCall",
                                          "src": "12973:353:1",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                            "typeString": "struct DelegatedRevocationRequest memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                            "typeString": "struct DelegatedRevocationRequest memory"
                                          }
                                        ],
                                        "id": 827,
                                        "name": "_verifyRevoke",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2908,
                                        "src": "12938:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_DelegatedRevocationRequest_$2114_memory_ptr_$returns$__$",
                                          "typeString": "function (struct DelegatedRevocationRequest memory)"
                                        }
                                      },
                                      "id": 843,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12938:406:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 844,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12938:406:1"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 818,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 815,
                                  "src": "12883:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 819,
                                  "name": "dataLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 796,
                                  "src": "12887:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12883:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 846,
                              "initializationExpression": {
                                "assignments": [
                                  815
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 815,
                                    "mutability": "mutable",
                                    "name": "j",
                                    "nameLocation": "12876:1:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 846,
                                    "src": "12868:9:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 814,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12868:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 817,
                                "initialValue": {
                                  "hexValue": "30",
                                  "id": 816,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12880:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "12868:13:1"
                              },
                              "isSimpleCounterLoop": false,
                              "loopExpression": {
                                "expression": {
                                  "id": 825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 821,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 815,
                                    "src": "12899:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 823,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 815,
                                        "src": "12916:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 822,
                                      "name": "uncheckedInc",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 65,
                                      "src": "12903:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 824,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12903:15:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "12899:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 826,
                                "nodeType": "ExpressionStatement",
                                "src": "12899:19:1"
                              },
                              "nodeType": "ForStatement",
                              "src": "12863:496:1"
                            },
                            {
                              "expression": {
                                "id": 857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 847,
                                  "name": "availableValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 746,
                                  "src": "13485:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 849,
                                        "name": "multiDelegatedRequest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 782,
                                        "src": "13528:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                          "typeString": "struct MultiDelegatedRevocationRequest memory"
                                        }
                                      },
                                      "id": 850,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "13550:6:1",
                                      "memberName": "schema",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2125,
                                      "src": "13528:28:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 851,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 791,
                                      "src": "13574:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct RevocationRequestData memory[] memory"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 852,
                                        "name": "multiDelegatedRequest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 782,
                                        "src": "13596:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_memory_ptr",
                                          "typeString": "struct MultiDelegatedRevocationRequest memory"
                                        }
                                      },
                                      "id": 853,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "13618:7:1",
                                      "memberName": "revoker",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2135,
                                      "src": "13596:29:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 854,
                                      "name": "availableValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 746,
                                      "src": "13643:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 855,
                                      "name": "last",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 769,
                                      "src": "13675:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct RevocationRequestData memory[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 848,
                                    "name": "_revoke",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1485,
                                    "src": "13503:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (bytes32,struct RevocationRequestData memory[] memory,address,uint256,bool) returns (uint256)"
                                    }
                                  },
                                  "id": 856,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13503:190:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13485:208:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 858,
                              "nodeType": "ExpressionStatement",
                              "src": "13485:208:1"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 759,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 756,
                            "src": "11897:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 760,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 751,
                            "src": "11901:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11897:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 860,
                        "initializationExpression": {
                          "assignments": [
                            756
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 756,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "11890:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 860,
                              "src": "11882:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 755,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "11882:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 758,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11894:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "11882:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 762,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 756,
                              "src": "11909:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 764,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 756,
                                  "src": "11926:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 763,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "11913:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11913:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11909:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 767,
                          "nodeType": "ExpressionStatement",
                          "src": "11909:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "11877:1827:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 738,
                    "nodeType": "StructuredDocumentation",
                    "src": "11207:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "0eabf660",
                  "id": 862,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiRevokeByDelegation",
                  "nameLocation": "11241:23:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 743,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 742,
                        "mutability": "mutable",
                        "name": "multiDelegatedRequests",
                        "nameLocation": "11317:22:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 862,
                        "src": "11274:65:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MultiDelegatedRevocationRequest_$2138_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct MultiDelegatedRevocationRequest[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 740,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 739,
                              "name": "MultiDelegatedRevocationRequest",
                              "nameLocations": [
                                "11274:31:1"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2138,
                              "src": "11274:31:1"
                            },
                            "referencedDeclaration": 2138,
                            "src": "11274:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_storage_ptr",
                              "typeString": "struct MultiDelegatedRevocationRequest"
                            }
                          },
                          "id": 741,
                          "nodeType": "ArrayTypeName",
                          "src": "11274:33:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_MultiDelegatedRevocationRequest_$2138_storage_$dyn_storage_ptr",
                            "typeString": "struct MultiDelegatedRevocationRequest[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11264:81:1"
                  },
                  "returnParameters": {
                    "id": 744,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11363:0:1"
                  },
                  "scope": 2019,
                  "src": "11232:2478:1",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2264
                  ],
                  "body": {
                    "id": 882,
                    "nodeType": "Block",
                    "src": "13800:93:1",
                    "statements": [
                      {
                        "assignments": [
                          871
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 871,
                            "mutability": "mutable",
                            "name": "time",
                            "nameLocation": "13817:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 882,
                            "src": "13810:11:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 870,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "13810:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 874,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 872,
                            "name": "_time",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2921,
                            "src": "13824:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                              "typeString": "function () view returns (uint64)"
                            }
                          },
                          "id": 873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13824:7:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13810:21:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 876,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 865,
                              "src": "13853:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 877,
                              "name": "time",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 871,
                              "src": "13859:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 875,
                            "name": "_timestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1885,
                            "src": "13842:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,uint64)"
                            }
                          },
                          "id": 878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13842:22:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 879,
                        "nodeType": "ExpressionStatement",
                        "src": "13842:22:1"
                      },
                      {
                        "expression": {
                          "id": 880,
                          "name": "time",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 871,
                          "src": "13882:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 869,
                        "id": 881,
                        "nodeType": "Return",
                        "src": "13875:11:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 863,
                    "nodeType": "StructuredDocumentation",
                    "src": "13716:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "4d003070",
                  "id": 883,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timestamp",
                  "nameLocation": "13750:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 866,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 865,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "13768:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 883,
                        "src": "13760:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 864,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13760:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13759:14:1"
                  },
                  "returnParameters": {
                    "id": 869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 868,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 883,
                        "src": "13792:6:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 867,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "13792:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13791:8:1"
                  },
                  "scope": 2019,
                  "src": "13741:152:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2281
                  ],
                  "body": {
                    "id": 905,
                    "nodeType": "Block",
                    "src": "13988:110:1",
                    "statements": [
                      {
                        "assignments": [
                          892
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 892,
                            "mutability": "mutable",
                            "name": "time",
                            "nameLocation": "14005:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 905,
                            "src": "13998:11:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 891,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "13998:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 895,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 893,
                            "name": "_time",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2921,
                            "src": "14012:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                              "typeString": "function () view returns (uint64)"
                            }
                          },
                          "id": 894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14012:7:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13998:21:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 897,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14046:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "14050:6:1",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "14046:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 899,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 886,
                              "src": "14058:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 900,
                              "name": "time",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 892,
                              "src": "14064:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 896,
                            "name": "_revokeOffchain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1926,
                            "src": "14030:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (address,bytes32,uint64)"
                            }
                          },
                          "id": 901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14030:39:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 902,
                        "nodeType": "ExpressionStatement",
                        "src": "14030:39:1"
                      },
                      {
                        "expression": {
                          "id": 903,
                          "name": "time",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 892,
                          "src": "14087:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 890,
                        "id": 904,
                        "nodeType": "Return",
                        "src": "14080:11:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 884,
                    "nodeType": "StructuredDocumentation",
                    "src": "13899:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "cf190f34",
                  "id": 906,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revokeOffchain",
                  "nameLocation": "13933:14:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 887,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 886,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "13956:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 906,
                        "src": "13948:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 885,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13948:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13947:14:1"
                  },
                  "returnParameters": {
                    "id": 890,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 889,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 906,
                        "src": "13980:6:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 888,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "13980:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13979:8:1"
                  },
                  "scope": 2019,
                  "src": "13924:174:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2290
                  ],
                  "body": {
                    "id": 951,
                    "nodeType": "Block",
                    "src": "14209:228:1",
                    "statements": [
                      {
                        "assignments": [
                          916
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 916,
                            "mutability": "mutable",
                            "name": "time",
                            "nameLocation": "14226:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 951,
                            "src": "14219:11:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 915,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "14219:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 919,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 917,
                            "name": "_time",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2921,
                            "src": "14233:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                              "typeString": "function () view returns (uint64)"
                            }
                          },
                          "id": 918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14233:7:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14219:21:1"
                      },
                      {
                        "assignments": [
                          921
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 921,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "14259:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 951,
                            "src": "14251:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 920,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14251:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 924,
                        "initialValue": {
                          "expression": {
                            "id": 922,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 910,
                            "src": "14268:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                              "typeString": "bytes32[] calldata"
                            }
                          },
                          "id": 923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "14273:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "14268:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14251:28:1"
                      },
                      {
                        "body": {
                          "id": 947,
                          "nodeType": "Block",
                          "src": "14342:67:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 939,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "14372:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 940,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "14376:6:1",
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "14372:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 941,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 910,
                                      "src": "14384:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                        "typeString": "bytes32[] calldata"
                                      }
                                    },
                                    "id": 943,
                                    "indexExpression": {
                                      "id": 942,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 926,
                                      "src": "14389:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14384:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 944,
                                    "name": "time",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 916,
                                    "src": "14393:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 938,
                                  "name": "_revokeOffchain",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1926,
                                  "src": "14356:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint64_$returns$__$",
                                    "typeString": "function (address,bytes32,uint64)"
                                  }
                                },
                                "id": 945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14356:42:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 946,
                              "nodeType": "ExpressionStatement",
                              "src": "14356:42:1"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 929,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 926,
                            "src": "14309:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 930,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 921,
                            "src": "14313:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14309:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 948,
                        "initializationExpression": {
                          "assignments": [
                            926
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 926,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "14302:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 948,
                              "src": "14294:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 925,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14294:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 928,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14306:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "14294:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 936,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 932,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 926,
                              "src": "14321:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 934,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 926,
                                  "src": "14338:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 933,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "14325:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14325:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14321:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 937,
                          "nodeType": "ExpressionStatement",
                          "src": "14321:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "14289:120:1"
                      },
                      {
                        "expression": {
                          "id": 949,
                          "name": "time",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 916,
                          "src": "14426:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 914,
                        "id": 950,
                        "nodeType": "Return",
                        "src": "14419:11:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 907,
                    "nodeType": "StructuredDocumentation",
                    "src": "14104:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "13893f61",
                  "id": 952,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiRevokeOffchain",
                  "nameLocation": "14138:19:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 911,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 910,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "14177:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 952,
                        "src": "14158:23:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 908,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "14158:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 909,
                          "nodeType": "ArrayTypeName",
                          "src": "14158:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14157:25:1"
                  },
                  "returnParameters": {
                    "id": 914,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 913,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 952,
                        "src": "14201:6:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 912,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "14201:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14200:8:1"
                  },
                  "scope": 2019,
                  "src": "14129:308:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2273
                  ],
                  "body": {
                    "id": 995,
                    "nodeType": "Block",
                    "src": "14543:211:1",
                    "statements": [
                      {
                        "assignments": [
                          962
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 962,
                            "mutability": "mutable",
                            "name": "time",
                            "nameLocation": "14560:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 995,
                            "src": "14553:11:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 961,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "14553:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 965,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 963,
                            "name": "_time",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2921,
                            "src": "14567:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                              "typeString": "function () view returns (uint64)"
                            }
                          },
                          "id": 964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14567:7:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14553:21:1"
                      },
                      {
                        "assignments": [
                          967
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 967,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "14593:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 995,
                            "src": "14585:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 966,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14585:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 970,
                        "initialValue": {
                          "expression": {
                            "id": 968,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 956,
                            "src": "14602:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                              "typeString": "bytes32[] calldata"
                            }
                          },
                          "id": 969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "14607:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "14602:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14585:28:1"
                      },
                      {
                        "body": {
                          "id": 991,
                          "nodeType": "Block",
                          "src": "14676:50:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 985,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 956,
                                      "src": "14701:4:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                                        "typeString": "bytes32[] calldata"
                                      }
                                    },
                                    "id": 987,
                                    "indexExpression": {
                                      "id": 986,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 972,
                                      "src": "14706:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14701:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 988,
                                    "name": "time",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 962,
                                    "src": "14710:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  ],
                                  "id": 984,
                                  "name": "_timestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1885,
                                  "src": "14690:10:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                                    "typeString": "function (bytes32,uint64)"
                                  }
                                },
                                "id": 989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14690:25:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 990,
                              "nodeType": "ExpressionStatement",
                              "src": "14690:25:1"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 975,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 972,
                            "src": "14643:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 976,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 967,
                            "src": "14647:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14643:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 992,
                        "initializationExpression": {
                          "assignments": [
                            972
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 972,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "14636:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 992,
                              "src": "14628:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 971,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14628:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 974,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 973,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14640:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "14628:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 978,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 972,
                              "src": "14655:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 980,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 972,
                                  "src": "14672:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 979,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "14659:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14659:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14655:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 983,
                          "nodeType": "ExpressionStatement",
                          "src": "14655:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "14623:103:1"
                      },
                      {
                        "expression": {
                          "id": 993,
                          "name": "time",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 962,
                          "src": "14743:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 960,
                        "id": 994,
                        "nodeType": "Return",
                        "src": "14736:11:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 953,
                    "nodeType": "StructuredDocumentation",
                    "src": "14443:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "e71ff365",
                  "id": 996,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiTimestamp",
                  "nameLocation": "14477:14:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 956,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "14511:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 996,
                        "src": "14492:23:1",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 954,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "14492:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 955,
                          "nodeType": "ArrayTypeName",
                          "src": "14492:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14491:25:1"
                  },
                  "returnParameters": {
                    "id": 960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 959,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 996,
                        "src": "14535:6:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 958,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "14535:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14534:8:1"
                  },
                  "scope": 2019,
                  "src": "14468:286:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2299
                  ],
                  "body": {
                    "id": 1009,
                    "nodeType": "Block",
                    "src": "14865:32:1",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1005,
                            "name": "_db",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 155,
                            "src": "14882:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Attestation_$49_storage_$",
                              "typeString": "mapping(bytes32 => struct Attestation storage ref)"
                            }
                          },
                          "id": 1007,
                          "indexExpression": {
                            "id": 1006,
                            "name": "uid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 999,
                            "src": "14886:3:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "14882:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Attestation_$49_storage",
                            "typeString": "struct Attestation storage ref"
                          }
                        },
                        "functionReturnParameters": 1004,
                        "id": 1008,
                        "nodeType": "Return",
                        "src": "14875:15:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 997,
                    "nodeType": "StructuredDocumentation",
                    "src": "14760:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "a3112a64",
                  "id": 1010,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAttestation",
                  "nameLocation": "14794:14:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 999,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "14817:3:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1010,
                        "src": "14809:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 998,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14809:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14808:13:1"
                  },
                  "returnParameters": {
                    "id": 1004,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1003,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1010,
                        "src": "14845:18:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                          "typeString": "struct Attestation"
                        },
                        "typeName": {
                          "id": 1002,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1001,
                            "name": "Attestation",
                            "nameLocations": [
                              "14845:11:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 49,
                            "src": "14845:11:1"
                          },
                          "referencedDeclaration": 49,
                          "src": "14845:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                            "typeString": "struct Attestation"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14844:20:1"
                  },
                  "scope": 2019,
                  "src": "14785:112:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2307
                  ],
                  "body": {
                    "id": 1025,
                    "nodeType": "Block",
                    "src": "14996:49:1",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1018,
                                "name": "_db",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 155,
                                "src": "15013:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Attestation_$49_storage_$",
                                  "typeString": "mapping(bytes32 => struct Attestation storage ref)"
                                }
                              },
                              "id": 1020,
                              "indexExpression": {
                                "id": 1019,
                                "name": "uid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1013,
                                "src": "15017:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15013:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Attestation_$49_storage",
                                "typeString": "struct Attestation storage ref"
                              }
                            },
                            "id": 1021,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "15022:3:1",
                            "memberName": "uid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30,
                            "src": "15013:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 1022,
                            "name": "EMPTY_UID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "15029:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "15013:25:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1017,
                        "id": 1024,
                        "nodeType": "Return",
                        "src": "15006:32:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1011,
                    "nodeType": "StructuredDocumentation",
                    "src": "14903:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "e30bb563",
                  "id": 1026,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isAttestationValid",
                  "nameLocation": "14937:18:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1013,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "14964:3:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1026,
                        "src": "14956:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1012,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14956:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14955:13:1"
                  },
                  "returnParameters": {
                    "id": 1017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1016,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1026,
                        "src": "14990:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1015,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14990:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14989:6:1"
                  },
                  "scope": 2019,
                  "src": "14928:117:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2315
                  ],
                  "body": {
                    "id": 1038,
                    "nodeType": "Block",
                    "src": "15143:41:1",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 1034,
                            "name": "_timestamps",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 159,
                            "src": "15160:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                              "typeString": "mapping(bytes32 => uint64)"
                            }
                          },
                          "id": 1036,
                          "indexExpression": {
                            "id": 1035,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1029,
                            "src": "15172:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15160:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 1033,
                        "id": 1037,
                        "nodeType": "Return",
                        "src": "15153:24:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1027,
                    "nodeType": "StructuredDocumentation",
                    "src": "15051:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "d45c4435",
                  "id": 1039,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTimestamp",
                  "nameLocation": "15085:12:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1030,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1029,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15106:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1039,
                        "src": "15098:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1028,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15098:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15097:14:1"
                  },
                  "returnParameters": {
                    "id": 1033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1032,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1039,
                        "src": "15135:6:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 1031,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "15135:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15134:8:1"
                  },
                  "scope": 2019,
                  "src": "15076:108:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2325
                  ],
                  "body": {
                    "id": 1055,
                    "nodeType": "Block",
                    "src": "15304:59:1",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 1049,
                              "name": "_revocationsOffchain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 165,
                              "src": "15321:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint64_$_$",
                                "typeString": "mapping(address => mapping(bytes32 => uint64))"
                              }
                            },
                            "id": 1051,
                            "indexExpression": {
                              "id": 1050,
                              "name": "revoker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1042,
                              "src": "15342:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15321:29:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                              "typeString": "mapping(bytes32 => uint64)"
                            }
                          },
                          "id": 1053,
                          "indexExpression": {
                            "id": 1052,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1044,
                            "src": "15351:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15321:35:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 1048,
                        "id": 1054,
                        "nodeType": "Return",
                        "src": "15314:42:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1040,
                    "nodeType": "StructuredDocumentation",
                    "src": "15190:20:1",
                    "text": "@inheritdoc IEAS"
                  },
                  "functionSelector": "b469318d",
                  "id": 1056,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevokeOffchain",
                  "nameLocation": "15224:17:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1045,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1042,
                        "mutability": "mutable",
                        "name": "revoker",
                        "nameLocation": "15250:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1056,
                        "src": "15242:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1041,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15242:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1044,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15267:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1056,
                        "src": "15259:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1043,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15259:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15241:31:1"
                  },
                  "returnParameters": {
                    "id": 1048,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1047,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1056,
                        "src": "15296:6:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 1046,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "15296:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15295:8:1"
                  },
                  "scope": 2019,
                  "src": "15215:148:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1306,
                    "nodeType": "Block",
                    "src": "16063:2681:1",
                    "statements": [
                      {
                        "assignments": [
                          1076
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1076,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "16081:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1306,
                            "src": "16073:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1075,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16073:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1079,
                        "initialValue": {
                          "expression": {
                            "id": 1077,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1063,
                            "src": "16090:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AttestationRequestData memory[] memory"
                            }
                          },
                          "id": 1078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "16095:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "16090:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16073:28:1"
                      },
                      {
                        "assignments": [
                          1082
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1082,
                            "mutability": "mutable",
                            "name": "res",
                            "nameLocation": "16138:3:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1306,
                            "src": "16112:29:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                              "typeString": "struct EAS.AttestationsResult"
                            },
                            "typeName": {
                              "id": 1081,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 1080,
                                "name": "AttestationsResult",
                                "nameLocations": [
                                  "16112:18:1"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 147,
                                "src": "16112:18:1"
                              },
                              "referencedDeclaration": 147,
                              "src": "16112:18:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AttestationsResult_$147_storage_ptr",
                                "typeString": "struct EAS.AttestationsResult"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1083,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16112:29:1"
                      },
                      {
                        "expression": {
                          "id": 1092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 1084,
                              "name": "res",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1082,
                              "src": "16151:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                "typeString": "struct EAS.AttestationsResult memory"
                              }
                            },
                            "id": 1086,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "16155:4:1",
                            "memberName": "uids",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 146,
                            "src": "16151:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 1090,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1076,
                                "src": "16176:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1089,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "16162:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes32[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 1087,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16166:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 1088,
                                "nodeType": "ArrayTypeName",
                                "src": "16166:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                  "typeString": "bytes32[]"
                                }
                              }
                            },
                            "id": 1091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16162:21:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory"
                            }
                          },
                          "src": "16151:32:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "id": 1093,
                        "nodeType": "ExpressionStatement",
                        "src": "16151:32:1"
                      },
                      {
                        "assignments": [
                          1096
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1096,
                            "mutability": "mutable",
                            "name": "schemaRecord",
                            "nameLocation": "16294:12:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1306,
                            "src": "16274:32:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                              "typeString": "struct SchemaRecord"
                            },
                            "typeName": {
                              "id": 1095,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 1094,
                                "name": "SchemaRecord",
                                "nameLocations": [
                                  "16274:12:1"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2343,
                                "src": "16274:12:1"
                              },
                              "referencedDeclaration": 2343,
                              "src": "16274:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                                "typeString": "struct SchemaRecord"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1101,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1099,
                              "name": "schemaUID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1059,
                              "src": "16335:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 1097,
                              "name": "_schemaRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 150,
                              "src": "16309:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                                "typeString": "contract ISchemaRegistry"
                              }
                            },
                            "id": 1098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "16325:9:1",
                            "memberName": "getSchema",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2378,
                            "src": "16309:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_SchemaRecord_$2343_memory_ptr_$",
                              "typeString": "function (bytes32) view external returns (struct SchemaRecord memory)"
                            }
                          },
                          "id": 1100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16309:36:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                            "typeString": "struct SchemaRecord memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16274:71:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1102,
                              "name": "schemaRecord",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1096,
                              "src": "16359:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              }
                            },
                            "id": 1103,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "16372:3:1",
                            "memberName": "uid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2335,
                            "src": "16359:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 1104,
                            "name": "EMPTY_UID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "16379:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "16359:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1110,
                        "nodeType": "IfStatement",
                        "src": "16355:82:1",
                        "trueBody": {
                          "id": 1109,
                          "nodeType": "Block",
                          "src": "16390:47:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1106,
                                  "name": "InvalidSchema",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 132,
                                  "src": "16411:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 1107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16411:15:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1108,
                              "nodeType": "RevertStatement",
                              "src": "16404:22:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1115
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1115,
                            "mutability": "mutable",
                            "name": "attestations",
                            "nameLocation": "16468:12:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1306,
                            "src": "16447:33:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Attestation[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1113,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 1112,
                                  "name": "Attestation",
                                  "nameLocations": [
                                    "16447:11:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 49,
                                  "src": "16447:11:1"
                                },
                                "referencedDeclaration": 49,
                                "src": "16447:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                  "typeString": "struct Attestation"
                                }
                              },
                              "id": 1114,
                              "nodeType": "ArrayTypeName",
                              "src": "16447:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Attestation_$49_storage_$dyn_storage_ptr",
                                "typeString": "struct Attestation[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1122,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1120,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1076,
                              "src": "16501:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "16483:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct Attestation memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1117,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 1116,
                                  "name": "Attestation",
                                  "nameLocations": [
                                    "16487:11:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 49,
                                  "src": "16487:11:1"
                                },
                                "referencedDeclaration": 49,
                                "src": "16487:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                  "typeString": "struct Attestation"
                                }
                              },
                              "id": 1118,
                              "nodeType": "ArrayTypeName",
                              "src": "16487:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Attestation_$49_storage_$dyn_storage_ptr",
                                "typeString": "struct Attestation[]"
                              }
                            }
                          },
                          "id": 1121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16483:25:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Attestation memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16447:61:1"
                      },
                      {
                        "assignments": [
                          1127
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1127,
                            "mutability": "mutable",
                            "name": "values",
                            "nameLocation": "16535:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1306,
                            "src": "16518:23:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1125,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "16518:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1126,
                              "nodeType": "ArrayTypeName",
                              "src": "16518:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1133,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1131,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1076,
                              "src": "16558:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "16544:13:1",
                            "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": 1128,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "16548:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1129,
                              "nodeType": "ArrayTypeName",
                              "src": "16548:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16544:21:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16518:47:1"
                      },
                      {
                        "body": {
                          "id": 1289,
                          "nodeType": "Block",
                          "src": "16629:1976:1",
                          "statements": [
                            {
                              "assignments": [
                                1149
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1149,
                                  "mutability": "mutable",
                                  "name": "request",
                                  "nameLocation": "16673:7:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1289,
                                  "src": "16643:37:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                    "typeString": "struct AttestationRequestData"
                                  },
                                  "typeName": {
                                    "id": 1148,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 1147,
                                      "name": "AttestationRequestData",
                                      "nameLocations": [
                                        "16643:22:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 2042,
                                      "src": "16643:22:1"
                                    },
                                    "referencedDeclaration": 2042,
                                    "src": "16643:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                                      "typeString": "struct AttestationRequestData"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1153,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1150,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1063,
                                  "src": "16683:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct AttestationRequestData memory[] memory"
                                  }
                                },
                                "id": 1152,
                                "indexExpression": {
                                  "id": 1151,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1135,
                                  "src": "16688:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16683:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                  "typeString": "struct AttestationRequestData memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16643:47:1"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  "id": 1157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 1154,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1149,
                                      "src": "16804:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                        "typeString": "struct AttestationRequestData memory"
                                      }
                                    },
                                    "id": 1155,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "16812:14:1",
                                    "memberName": "expirationTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2033,
                                    "src": "16804:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "id": 1156,
                                    "name": "NO_EXPIRATION_TIME",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7,
                                    "src": "16830:18:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "src": "16804:44:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  "id": 1162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 1158,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1149,
                                      "src": "16852:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                        "typeString": "struct AttestationRequestData memory"
                                      }
                                    },
                                    "id": 1159,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "16860:14:1",
                                    "memberName": "expirationTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2033,
                                    "src": "16852:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<=",
                                  "rightExpression": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1160,
                                      "name": "_time",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2921,
                                      "src": "16878:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                                        "typeString": "function () view returns (uint64)"
                                      }
                                    },
                                    "id": 1161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16878:7:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "src": "16852:33:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "16804:81:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1168,
                              "nodeType": "IfStatement",
                              "src": "16800:150:1",
                              "trueBody": {
                                "id": 1167,
                                "nodeType": "Block",
                                "src": "16887:63:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1164,
                                        "name": "InvalidExpirationTime",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 122,
                                        "src": "16912:21:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1165,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16912:23:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1166,
                                    "nodeType": "RevertStatement",
                                    "src": "16905:30:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1174,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1171,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "17072:23:1",
                                  "subExpression": {
                                    "expression": {
                                      "id": 1169,
                                      "name": "schemaRecord",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1096,
                                      "src": "17073:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                        "typeString": "struct SchemaRecord memory"
                                      }
                                    },
                                    "id": 1170,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "17086:9:1",
                                    "memberName": "revocable",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2340,
                                    "src": "17073:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "expression": {
                                    "id": 1172,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1149,
                                    "src": "17099:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                      "typeString": "struct AttestationRequestData memory"
                                    }
                                  },
                                  "id": 1173,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "17107:9:1",
                                  "memberName": "revocable",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2035,
                                  "src": "17099:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "17072:44:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1179,
                              "nodeType": "IfStatement",
                              "src": "17068:103:1",
                              "trueBody": {
                                "id": 1178,
                                "nodeType": "Block",
                                "src": "17118:53:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1175,
                                        "name": "Irrevocable",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 136,
                                        "src": "17143:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1176,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17143:13:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1177,
                                    "nodeType": "RevertStatement",
                                    "src": "17136:20:1"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                1182
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1182,
                                  "mutability": "mutable",
                                  "name": "attestation",
                                  "nameLocation": "17204:11:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1289,
                                  "src": "17185:30:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                    "typeString": "struct Attestation"
                                  },
                                  "typeName": {
                                    "id": 1181,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 1180,
                                      "name": "Attestation",
                                      "nameLocations": [
                                        "17185:11:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 49,
                                      "src": "17185:11:1"
                                    },
                                    "referencedDeclaration": 49,
                                    "src": "17185:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                      "typeString": "struct Attestation"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1201,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 1184,
                                    "name": "EMPTY_UID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4,
                                    "src": "17253:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 1185,
                                    "name": "schemaUID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1059,
                                    "src": "17288:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1186,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1149,
                                      "src": "17323:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                        "typeString": "struct AttestationRequestData memory"
                                      }
                                    },
                                    "id": 1187,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "17331:6:1",
                                    "memberName": "refUID",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2037,
                                    "src": "17323:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 1188,
                                      "name": "_time",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2921,
                                      "src": "17361:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                                        "typeString": "function () view returns (uint64)"
                                      }
                                    },
                                    "id": 1189,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17361:7:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1190,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1149,
                                      "src": "17402:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                        "typeString": "struct AttestationRequestData memory"
                                      }
                                    },
                                    "id": 1191,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "17410:14:1",
                                    "memberName": "expirationTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2033,
                                    "src": "17402:22:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 1192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17458:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "expression": {
                                      "id": 1193,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1149,
                                      "src": "17488:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                        "typeString": "struct AttestationRequestData memory"
                                      }
                                    },
                                    "id": 1194,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "17496:9:1",
                                    "memberName": "recipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2031,
                                    "src": "17488:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1195,
                                    "name": "attester",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1065,
                                    "src": "17533:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1196,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1149,
                                      "src": "17570:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                        "typeString": "struct AttestationRequestData memory"
                                      }
                                    },
                                    "id": 1197,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "17578:9:1",
                                    "memberName": "revocable",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2035,
                                    "src": "17570:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1198,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1149,
                                      "src": "17611:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                        "typeString": "struct AttestationRequestData memory"
                                      }
                                    },
                                    "id": 1199,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "17619:4:1",
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2039,
                                    "src": "17611:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1183,
                                  "name": "Attestation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 49,
                                  "src": "17218:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_Attestation_$49_storage_ptr_$",
                                    "typeString": "type(struct Attestation storage pointer)"
                                  }
                                },
                                "id": 1200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "nameLocations": [
                                  "17248:3:1",
                                  "17280:6:1",
                                  "17315:6:1",
                                  "17355:4:1",
                                  "17386:14:1",
                                  "17442:14:1",
                                  "17477:9:1",
                                  "17523:8:1",
                                  "17559:9:1",
                                  "17605:4:1"
                                ],
                                "names": [
                                  "uid",
                                  "schema",
                                  "refUID",
                                  "time",
                                  "expirationTime",
                                  "revocationTime",
                                  "recipient",
                                  "attester",
                                  "revocable",
                                  "data"
                                ],
                                "nodeType": "FunctionCall",
                                "src": "17218:420:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                  "typeString": "struct Attestation memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17185:453:1"
                            },
                            {
                              "assignments": [
                                1203
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1203,
                                  "mutability": "mutable",
                                  "name": "uid",
                                  "nameLocation": "17772:3:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1289,
                                  "src": "17764:11:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 1202,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17764:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1204,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17764:11:1"
                            },
                            {
                              "assignments": [
                                1206
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1206,
                                  "mutability": "mutable",
                                  "name": "bump",
                                  "nameLocation": "17796:4:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1289,
                                  "src": "17789:11:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 1205,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17789:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1208,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 1207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17803:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17789:15:1"
                            },
                            {
                              "body": {
                                "id": 1230,
                                "nodeType": "Block",
                                "src": "17831:234:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 1215,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 1210,
                                        "name": "uid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1203,
                                        "src": "17849:3:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 1212,
                                            "name": "attestation",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1182,
                                            "src": "17863:11:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                              "typeString": "struct Attestation memory"
                                            }
                                          },
                                          {
                                            "id": 1213,
                                            "name": "bump",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1206,
                                            "src": "17876:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                              "typeString": "struct Attestation memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          ],
                                          "id": 1211,
                                          "name": "_getUID",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1834,
                                          "src": "17855:7:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Attestation_$49_memory_ptr_$_t_uint32_$returns$_t_bytes32_$",
                                            "typeString": "function (struct Attestation memory,uint32) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 1214,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17855:26:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "17849:32:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 1216,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17849:32:1"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "id": 1222,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 1217,
                                            "name": "_db",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 155,
                                            "src": "17903:3:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Attestation_$49_storage_$",
                                              "typeString": "mapping(bytes32 => struct Attestation storage ref)"
                                            }
                                          },
                                          "id": 1219,
                                          "indexExpression": {
                                            "id": 1218,
                                            "name": "uid",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1203,
                                            "src": "17907:3:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "17903:8:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Attestation_$49_storage",
                                            "typeString": "struct Attestation storage ref"
                                          }
                                        },
                                        "id": 1220,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "17912:3:1",
                                        "memberName": "uid",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 30,
                                        "src": "17903:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "id": 1221,
                                        "name": "EMPTY_UID",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4,
                                        "src": "17919:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "17903:25:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 1225,
                                    "nodeType": "IfStatement",
                                    "src": "17899:77:1",
                                    "trueBody": {
                                      "id": 1224,
                                      "nodeType": "Block",
                                      "src": "17930:46:1",
                                      "statements": [
                                        {
                                          "id": 1223,
                                          "nodeType": "Break",
                                          "src": "17952:5:1"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "id": 1229,
                                    "nodeType": "UncheckedBlock",
                                    "src": "17994:57:1",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 1227,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": true,
                                          "src": "18026:6:1",
                                          "subExpression": {
                                            "id": 1226,
                                            "name": "bump",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1206,
                                            "src": "18028:4:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "id": 1228,
                                        "nodeType": "ExpressionStatement",
                                        "src": "18026:6:1"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "hexValue": "74727565",
                                "id": 1209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17825:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "id": 1231,
                              "nodeType": "WhileStatement",
                              "src": "17818:247:1"
                            },
                            {
                              "expression": {
                                "id": 1236,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1232,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1182,
                                    "src": "18078:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1234,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "18090:3:1",
                                  "memberName": "uid",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 30,
                                  "src": "18078:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 1235,
                                  "name": "uid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1203,
                                  "src": "18096:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "18078:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1237,
                              "nodeType": "ExpressionStatement",
                              "src": "18078:21:1"
                            },
                            {
                              "expression": {
                                "id": 1242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1238,
                                    "name": "_db",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 155,
                                    "src": "18114:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Attestation_$49_storage_$",
                                      "typeString": "mapping(bytes32 => struct Attestation storage ref)"
                                    }
                                  },
                                  "id": 1240,
                                  "indexExpression": {
                                    "id": 1239,
                                    "name": "uid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1203,
                                    "src": "18118:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18114:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_storage",
                                    "typeString": "struct Attestation storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 1241,
                                  "name": "attestation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1182,
                                  "src": "18125:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                    "typeString": "struct Attestation memory"
                                  }
                                },
                                "src": "18114:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_storage",
                                  "typeString": "struct Attestation storage ref"
                                }
                              },
                              "id": 1243,
                              "nodeType": "ExpressionStatement",
                              "src": "18114:22:1"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 1247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1244,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1149,
                                    "src": "18155:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                      "typeString": "struct AttestationRequestData memory"
                                    }
                                  },
                                  "id": 1245,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "18163:6:1",
                                  "memberName": "refUID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2037,
                                  "src": "18155:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 1246,
                                  "name": "EMPTY_UID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4,
                                  "src": "18173:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "18155:27:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1259,
                              "nodeType": "IfStatement",
                              "src": "18151:256:1",
                              "trueBody": {
                                "id": 1258,
                                "nodeType": "Block",
                                "src": "18184:223:1",
                                "statements": [
                                  {
                                    "condition": {
                                      "id": 1252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "!",
                                      "prefix": true,
                                      "src": "18298:35:1",
                                      "subExpression": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 1249,
                                              "name": "request",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1149,
                                              "src": "18318:7:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                                "typeString": "struct AttestationRequestData memory"
                                              }
                                            },
                                            "id": 1250,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "18326:6:1",
                                            "memberName": "refUID",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2037,
                                            "src": "18318:14:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 1248,
                                          "name": "isAttestationValid",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1026,
                                          "src": "18299:18:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                                            "typeString": "function (bytes32) view returns (bool)"
                                          }
                                        },
                                        "id": 1251,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "18299:34:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 1257,
                                    "nodeType": "IfStatement",
                                    "src": "18294:99:1",
                                    "trueBody": {
                                      "id": 1256,
                                      "nodeType": "Block",
                                      "src": "18335:58:1",
                                      "statements": [
                                        {
                                          "errorCall": {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 1253,
                                              "name": "NotFound",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 19,
                                              "src": "18364:8:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                                "typeString": "function () pure returns (error)"
                                              }
                                            },
                                            "id": 1254,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "18364:10:1",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_error",
                                              "typeString": "error"
                                            }
                                          },
                                          "id": 1255,
                                          "nodeType": "RevertStatement",
                                          "src": "18357:17:1"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 1264,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1260,
                                    "name": "attestations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1115,
                                    "src": "18421:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct Attestation memory[] memory"
                                    }
                                  },
                                  "id": 1262,
                                  "indexExpression": {
                                    "id": 1261,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1135,
                                    "src": "18434:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18421:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                    "typeString": "struct Attestation memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 1263,
                                  "name": "attestation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1182,
                                  "src": "18439:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                    "typeString": "struct Attestation memory"
                                  }
                                },
                                "src": "18421:29:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                  "typeString": "struct Attestation memory"
                                }
                              },
                              "id": 1265,
                              "nodeType": "ExpressionStatement",
                              "src": "18421:29:1"
                            },
                            {
                              "expression": {
                                "id": 1271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1266,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1127,
                                    "src": "18464:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1268,
                                  "indexExpression": {
                                    "id": 1267,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1135,
                                    "src": "18471:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18464:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 1269,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1149,
                                    "src": "18476:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                      "typeString": "struct AttestationRequestData memory"
                                    }
                                  },
                                  "id": 1270,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "18484:5:1",
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2041,
                                  "src": "18476:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18464:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1272,
                              "nodeType": "ExpressionStatement",
                              "src": "18464:25:1"
                            },
                            {
                              "expression": {
                                "id": 1279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 1273,
                                      "name": "res",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1082,
                                      "src": "18504:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                        "typeString": "struct EAS.AttestationsResult memory"
                                      }
                                    },
                                    "id": 1276,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "18508:4:1",
                                    "memberName": "uids",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 146,
                                    "src": "18504:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                      "typeString": "bytes32[] memory"
                                    }
                                  },
                                  "id": 1277,
                                  "indexExpression": {
                                    "id": 1275,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1135,
                                    "src": "18513:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "18504:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 1278,
                                  "name": "uid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1203,
                                  "src": "18518:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "18504:17:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1280,
                              "nodeType": "ExpressionStatement",
                              "src": "18504:17:1"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 1282,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1149,
                                      "src": "18550:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                        "typeString": "struct AttestationRequestData memory"
                                      }
                                    },
                                    "id": 1283,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "18558:9:1",
                                    "memberName": "recipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2031,
                                    "src": "18550:17:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1284,
                                    "name": "attester",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1065,
                                    "src": "18569:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1285,
                                    "name": "uid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1203,
                                    "src": "18579:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 1286,
                                    "name": "schemaUID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1059,
                                    "src": "18584:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 1281,
                                  "name": "Attested",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2152,
                                  "src": "18541:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                    "typeString": "function (address,address,bytes32,bytes32)"
                                  }
                                },
                                "id": 1287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18541:53:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1288,
                              "nodeType": "EmitStatement",
                              "src": "18536:58:1"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1138,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1135,
                            "src": "16596:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1139,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1076,
                            "src": "16600:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16596:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1290,
                        "initializationExpression": {
                          "assignments": [
                            1135
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1135,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "16589:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 1290,
                              "src": "16581:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1134,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "16581:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1137,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16593:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "16581:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 1145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 1141,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1135,
                              "src": "16608:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 1143,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1135,
                                  "src": "16625:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1142,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "16612:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16612:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16608:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1146,
                          "nodeType": "ExpressionStatement",
                          "src": "16608:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "16576:2029:1"
                      },
                      {
                        "expression": {
                          "id": 1302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 1291,
                              "name": "res",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1082,
                              "src": "18615:3:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                                "typeString": "struct EAS.AttestationsResult memory"
                              }
                            },
                            "id": 1293,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "18619:9:1",
                            "memberName": "usedValue",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 143,
                            "src": "18615:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 1295,
                                "name": "schemaRecord",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1096,
                                "src": "18652:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                  "typeString": "struct SchemaRecord memory"
                                }
                              },
                              {
                                "id": 1296,
                                "name": "attestations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1115,
                                "src": "18666:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Attestation memory[] memory"
                                }
                              },
                              {
                                "id": 1297,
                                "name": "values",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1127,
                                "src": "18680:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 1298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18688:5:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "id": 1299,
                                "name": "availableValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1067,
                                "src": "18695:14:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 1300,
                                "name": "last",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1069,
                                "src": "18711:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                  "typeString": "struct SchemaRecord memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Attestation memory[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 1294,
                              "name": "_resolveAttestations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1799,
                              "src": "18631:20:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_SchemaRecord_$2343_memory_ptr_$_t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bool_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (struct SchemaRecord memory,struct Attestation memory[] memory,uint256[] memory,bool,uint256,bool) returns (uint256)"
                              }
                            },
                            "id": 1301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18631:85:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18615:101:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1303,
                        "nodeType": "ExpressionStatement",
                        "src": "18615:101:1"
                      },
                      {
                        "expression": {
                          "id": 1304,
                          "name": "res",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1082,
                          "src": "18734:3:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                            "typeString": "struct EAS.AttestationsResult memory"
                          }
                        },
                        "functionReturnParameters": 1074,
                        "id": 1305,
                        "nodeType": "Return",
                        "src": "18727:10:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1057,
                    "nodeType": "StructuredDocumentation",
                    "src": "15369:472:1",
                    "text": "@dev Attests to a specific schema.\n @param schemaUID The unique identifier of the schema to attest to.\n @param data The arguments of the attestation requests.\n @param attester The attesting account.\n @param availableValue The total available ETH amount that can be sent to the resolver.\n @param last Whether this is the last attestations/revocations set.\n @return The UID of the new attestations and the total sent ETH amount."
                  },
                  "id": 1307,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_attest",
                  "nameLocation": "15855:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1070,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1059,
                        "mutability": "mutable",
                        "name": "schemaUID",
                        "nameLocation": "15880:9:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1307,
                        "src": "15872:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1058,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15872:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1063,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15931:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1307,
                        "src": "15899:36:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AttestationRequestData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1061,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1060,
                              "name": "AttestationRequestData",
                              "nameLocations": [
                                "15899:22:1"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2042,
                              "src": "15899:22:1"
                            },
                            "referencedDeclaration": 2042,
                            "src": "15899:22:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                              "typeString": "struct AttestationRequestData"
                            }
                          },
                          "id": 1062,
                          "nodeType": "ArrayTypeName",
                          "src": "15899:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                            "typeString": "struct AttestationRequestData[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1065,
                        "mutability": "mutable",
                        "name": "attester",
                        "nameLocation": "15953:8:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1307,
                        "src": "15945:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1064,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15945:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1067,
                        "mutability": "mutable",
                        "name": "availableValue",
                        "nameLocation": "15979:14:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1307,
                        "src": "15971:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1066,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15971:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1069,
                        "mutability": "mutable",
                        "name": "last",
                        "nameLocation": "16008:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1307,
                        "src": "16003:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1068,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16003:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15862:156:1"
                  },
                  "returnParameters": {
                    "id": 1074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1073,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1307,
                        "src": "16036:25:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AttestationsResult_$147_memory_ptr",
                          "typeString": "struct EAS.AttestationsResult"
                        },
                        "typeName": {
                          "id": 1072,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1071,
                            "name": "AttestationsResult",
                            "nameLocations": [
                              "16036:18:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 147,
                            "src": "16036:18:1"
                          },
                          "referencedDeclaration": 147,
                          "src": "16036:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AttestationsResult_$147_storage_ptr",
                            "typeString": "struct EAS.AttestationsResult"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16035:27:1"
                  },
                  "scope": 2019,
                  "src": "15846:2898:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1484,
                    "nodeType": "Block",
                    "src": "19417:1960:1",
                    "statements": [
                      {
                        "assignments": [
                          1327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1327,
                            "mutability": "mutable",
                            "name": "schemaRecord",
                            "nameLocation": "19522:12:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1484,
                            "src": "19502:32:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                              "typeString": "struct SchemaRecord"
                            },
                            "typeName": {
                              "id": 1326,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 1325,
                                "name": "SchemaRecord",
                                "nameLocations": [
                                  "19502:12:1"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2343,
                                "src": "19502:12:1"
                              },
                              "referencedDeclaration": 2343,
                              "src": "19502:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                                "typeString": "struct SchemaRecord"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1332,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1330,
                              "name": "schemaUID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1310,
                              "src": "19563:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 1328,
                              "name": "_schemaRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 150,
                              "src": "19537:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                                "typeString": "contract ISchemaRegistry"
                              }
                            },
                            "id": 1329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "19553:9:1",
                            "memberName": "getSchema",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2378,
                            "src": "19537:25:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_SchemaRecord_$2343_memory_ptr_$",
                              "typeString": "function (bytes32) view external returns (struct SchemaRecord memory)"
                            }
                          },
                          "id": 1331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19537:36:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                            "typeString": "struct SchemaRecord memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19502:71:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1333,
                              "name": "schemaRecord",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1327,
                              "src": "19587:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              }
                            },
                            "id": 1334,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "19600:3:1",
                            "memberName": "uid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2335,
                            "src": "19587:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 1335,
                            "name": "EMPTY_UID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "19607:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "19587:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1341,
                        "nodeType": "IfStatement",
                        "src": "19583:82:1",
                        "trueBody": {
                          "id": 1340,
                          "nodeType": "Block",
                          "src": "19618:47:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1337,
                                  "name": "InvalidSchema",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 132,
                                  "src": "19639:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 1338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19639:15:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1339,
                              "nodeType": "RevertStatement",
                              "src": "19632:22:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1343
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1343,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "19683:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1484,
                            "src": "19675:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1342,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19675:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1346,
                        "initialValue": {
                          "expression": {
                            "id": 1344,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1314,
                            "src": "19692:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct RevocationRequestData memory[] memory"
                            }
                          },
                          "id": 1345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19697:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "19692:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19675:28:1"
                      },
                      {
                        "assignments": [
                          1351
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1351,
                            "mutability": "mutable",
                            "name": "attestations",
                            "nameLocation": "19734:12:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1484,
                            "src": "19713:33:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Attestation[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1349,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 1348,
                                  "name": "Attestation",
                                  "nameLocations": [
                                    "19713:11:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 49,
                                  "src": "19713:11:1"
                                },
                                "referencedDeclaration": 49,
                                "src": "19713:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                  "typeString": "struct Attestation"
                                }
                              },
                              "id": 1350,
                              "nodeType": "ArrayTypeName",
                              "src": "19713:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Attestation_$49_storage_$dyn_storage_ptr",
                                "typeString": "struct Attestation[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1358,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1356,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1343,
                              "src": "19767:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19749:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct Attestation memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1353,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 1352,
                                  "name": "Attestation",
                                  "nameLocations": [
                                    "19753:11:1"
                                  ],
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 49,
                                  "src": "19753:11:1"
                                },
                                "referencedDeclaration": 49,
                                "src": "19753:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                  "typeString": "struct Attestation"
                                }
                              },
                              "id": 1354,
                              "nodeType": "ArrayTypeName",
                              "src": "19753:13:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Attestation_$49_storage_$dyn_storage_ptr",
                                "typeString": "struct Attestation[]"
                              }
                            }
                          },
                          "id": 1357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19749:25:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Attestation memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19713:61:1"
                      },
                      {
                        "assignments": [
                          1363
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1363,
                            "mutability": "mutable",
                            "name": "values",
                            "nameLocation": "19801:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1484,
                            "src": "19784:23:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1361,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19784:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1362,
                              "nodeType": "ArrayTypeName",
                              "src": "19784:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1369,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1367,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1343,
                              "src": "19824:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19810:13:1",
                            "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": 1364,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19814:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1365,
                              "nodeType": "ArrayTypeName",
                              "src": "19814:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19810:21:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19784:47:1"
                      },
                      {
                        "body": {
                          "id": 1473,
                          "nodeType": "Block",
                          "src": "19895:1374:1",
                          "statements": [
                            {
                              "assignments": [
                                1385
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1385,
                                  "mutability": "mutable",
                                  "name": "request",
                                  "nameLocation": "19938:7:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1473,
                                  "src": "19909:36:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                    "typeString": "struct RevocationRequestData"
                                  },
                                  "typeName": {
                                    "id": 1384,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 1383,
                                      "name": "RevocationRequestData",
                                      "nameLocations": [
                                        "19909:21:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 2093,
                                      "src": "19909:21:1"
                                    },
                                    "referencedDeclaration": 2093,
                                    "src": "19909:21:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                                      "typeString": "struct RevocationRequestData"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1389,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1386,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1314,
                                  "src": "19948:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct RevocationRequestData memory[] memory"
                                  }
                                },
                                "id": 1388,
                                "indexExpression": {
                                  "id": 1387,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1371,
                                  "src": "19953:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19948:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                  "typeString": "struct RevocationRequestData memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19909:46:1"
                            },
                            {
                              "assignments": [
                                1392
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1392,
                                  "mutability": "mutable",
                                  "name": "attestation",
                                  "nameLocation": "19990:11:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1473,
                                  "src": "19970:31:1",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                    "typeString": "struct Attestation"
                                  },
                                  "typeName": {
                                    "id": 1391,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 1390,
                                      "name": "Attestation",
                                      "nameLocations": [
                                        "19970:11:1"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 49,
                                      "src": "19970:11:1"
                                    },
                                    "referencedDeclaration": 49,
                                    "src": "19970:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                      "typeString": "struct Attestation"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1397,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1393,
                                  "name": "_db",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 155,
                                  "src": "20004:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Attestation_$49_storage_$",
                                    "typeString": "mapping(bytes32 => struct Attestation storage ref)"
                                  }
                                },
                                "id": 1396,
                                "indexExpression": {
                                  "expression": {
                                    "id": 1394,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1385,
                                    "src": "20008:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                      "typeString": "struct RevocationRequestData memory"
                                    }
                                  },
                                  "id": 1395,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "20016:3:1",
                                  "memberName": "uid",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2090,
                                  "src": "20008:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20004:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_storage",
                                  "typeString": "struct Attestation storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19970:50:1"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 1401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1398,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1392,
                                    "src": "20125:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                      "typeString": "struct Attestation storage pointer"
                                    }
                                  },
                                  "id": 1399,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "20137:3:1",
                                  "memberName": "uid",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 30,
                                  "src": "20125:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 1400,
                                  "name": "EMPTY_UID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4,
                                  "src": "20144:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "20125:28:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1406,
                              "nodeType": "IfStatement",
                              "src": "20121:84:1",
                              "trueBody": {
                                "id": 1405,
                                "nodeType": "Block",
                                "src": "20155:50:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1402,
                                        "name": "NotFound",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19,
                                        "src": "20180:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1403,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20180:10:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1404,
                                    "nodeType": "RevertStatement",
                                    "src": "20173:17:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 1410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1407,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1392,
                                    "src": "20295:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                      "typeString": "struct Attestation storage pointer"
                                    }
                                  },
                                  "id": 1408,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "20307:6:1",
                                  "memberName": "schema",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 32,
                                  "src": "20295:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 1409,
                                  "name": "schemaUID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1310,
                                  "src": "20317:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "20295:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1415,
                              "nodeType": "IfStatement",
                              "src": "20291:92:1",
                              "trueBody": {
                                "id": 1414,
                                "nodeType": "Block",
                                "src": "20328:55:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1411,
                                        "name": "InvalidSchema",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 132,
                                        "src": "20353:13:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1412,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20353:15:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1413,
                                    "nodeType": "RevertStatement",
                                    "src": "20346:22:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1416,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1392,
                                    "src": "20476:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                      "typeString": "struct Attestation storage pointer"
                                    }
                                  },
                                  "id": 1417,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "20488:8:1",
                                  "memberName": "attester",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 44,
                                  "src": "20476:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 1418,
                                  "name": "revoker",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1316,
                                  "src": "20500:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "20476:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1424,
                              "nodeType": "IfStatement",
                              "src": "20472:91:1",
                              "trueBody": {
                                "id": 1423,
                                "nodeType": "Block",
                                "src": "20509:54:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1420,
                                        "name": "AccessDenied",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9,
                                        "src": "20534:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1421,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20534:14:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1422,
                                    "nodeType": "RevertStatement",
                                    "src": "20527:21:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "id": 1427,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "20773:22:1",
                                "subExpression": {
                                  "expression": {
                                    "id": 1425,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1392,
                                    "src": "20774:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                      "typeString": "struct Attestation storage pointer"
                                    }
                                  },
                                  "id": 1426,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "20786:9:1",
                                  "memberName": "revocable",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 46,
                                  "src": "20774:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1432,
                              "nodeType": "IfStatement",
                              "src": "20769:81:1",
                              "trueBody": {
                                "id": 1431,
                                "nodeType": "Block",
                                "src": "20797:53:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1428,
                                        "name": "Irrevocable",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 136,
                                        "src": "20822:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1429,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "20822:13:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1430,
                                    "nodeType": "RevertStatement",
                                    "src": "20815:20:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                "id": 1436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1433,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1392,
                                    "src": "20950:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                      "typeString": "struct Attestation storage pointer"
                                    }
                                  },
                                  "id": 1434,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "20962:14:1",
                                  "memberName": "revocationTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 38,
                                  "src": "20950:26:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 1435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20980:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "20950:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1441,
                              "nodeType": "IfStatement",
                              "src": "20946:93:1",
                              "trueBody": {
                                "id": 1440,
                                "nodeType": "Block",
                                "src": "20983:56:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1437,
                                        "name": "AlreadyRevoked",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 110,
                                        "src": "21008:14:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1438,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "21008:16:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1439,
                                    "nodeType": "RevertStatement",
                                    "src": "21001:23:1"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 1447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 1442,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1392,
                                    "src": "21052:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                      "typeString": "struct Attestation storage pointer"
                                    }
                                  },
                                  "id": 1444,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "21064:14:1",
                                  "memberName": "revocationTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 38,
                                  "src": "21052:26:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1445,
                                    "name": "_time",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2921,
                                    "src": "21081:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                                      "typeString": "function () view returns (uint64)"
                                    }
                                  },
                                  "id": 1446,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21081:7:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "21052:36:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              "id": 1448,
                              "nodeType": "ExpressionStatement",
                              "src": "21052:36:1"
                            },
                            {
                              "expression": {
                                "id": 1453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1449,
                                    "name": "attestations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1351,
                                    "src": "21103:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct Attestation memory[] memory"
                                    }
                                  },
                                  "id": 1451,
                                  "indexExpression": {
                                    "id": 1450,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1371,
                                    "src": "21116:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21103:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                    "typeString": "struct Attestation memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 1452,
                                  "name": "attestation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1392,
                                  "src": "21121:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                                    "typeString": "struct Attestation storage pointer"
                                  }
                                },
                                "src": "21103:29:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                  "typeString": "struct Attestation memory"
                                }
                              },
                              "id": 1454,
                              "nodeType": "ExpressionStatement",
                              "src": "21103:29:1"
                            },
                            {
                              "expression": {
                                "id": 1460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1455,
                                    "name": "values",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1363,
                                    "src": "21146:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1457,
                                  "indexExpression": {
                                    "id": 1456,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1371,
                                    "src": "21153:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21146:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 1458,
                                    "name": "request",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1385,
                                    "src": "21158:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                      "typeString": "struct RevocationRequestData memory"
                                    }
                                  },
                                  "id": 1459,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "21166:5:1",
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2092,
                                  "src": "21158:13:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21146:25:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1461,
                              "nodeType": "ExpressionStatement",
                              "src": "21146:25:1"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 1463,
                                        "name": "attestations",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1351,
                                        "src": "21199:12:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct Attestation memory[] memory"
                                        }
                                      },
                                      "id": 1465,
                                      "indexExpression": {
                                        "id": 1464,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1371,
                                        "src": "21212:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "21199:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                        "typeString": "struct Attestation memory"
                                      }
                                    },
                                    "id": 1466,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "21215:9:1",
                                    "memberName": "recipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 42,
                                    "src": "21199:25:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1467,
                                    "name": "revoker",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1316,
                                    "src": "21226:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1468,
                                      "name": "request",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1385,
                                      "src": "21235:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                        "typeString": "struct RevocationRequestData memory"
                                      }
                                    },
                                    "id": 1469,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "21243:3:1",
                                    "memberName": "uid",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2090,
                                    "src": "21235:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 1470,
                                    "name": "schemaUID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1310,
                                    "src": "21248:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 1462,
                                  "name": "Revoked",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2163,
                                  "src": "21191:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes32_$returns$__$",
                                    "typeString": "function (address,address,bytes32,bytes32)"
                                  }
                                },
                                "id": 1471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21191:67:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1472,
                              "nodeType": "EmitStatement",
                              "src": "21186:72:1"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1374,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1371,
                            "src": "19862:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1375,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1343,
                            "src": "19866:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19862:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1474,
                        "initializationExpression": {
                          "assignments": [
                            1371
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1371,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "19855:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 1474,
                              "src": "19847:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1370,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19847:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1373,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1372,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19859:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "19847:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 1381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 1377,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1371,
                              "src": "19874:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 1379,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1371,
                                  "src": "19891:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1378,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "19878:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19878:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19874:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1382,
                          "nodeType": "ExpressionStatement",
                          "src": "19874:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "19842:1427:1"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1476,
                              "name": "schemaRecord",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1327,
                              "src": "21307:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              }
                            },
                            {
                              "id": 1477,
                              "name": "attestations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1351,
                              "src": "21321:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Attestation memory[] memory"
                              }
                            },
                            {
                              "id": 1478,
                              "name": "values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1363,
                              "src": "21335:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 1479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21343:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "id": 1480,
                              "name": "availableValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1318,
                              "src": "21349:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1481,
                              "name": "last",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1320,
                              "src": "21365:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Attestation memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 1475,
                            "name": "_resolveAttestations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1799,
                            "src": "21286:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_SchemaRecord_$2343_memory_ptr_$_t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bool_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (struct SchemaRecord memory,struct Attestation memory[] memory,uint256[] memory,bool,uint256,bool) returns (uint256)"
                            }
                          },
                          "id": 1482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21286:84:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1324,
                        "id": 1483,
                        "nodeType": "Return",
                        "src": "21279:91:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1308,
                    "nodeType": "StructuredDocumentation",
                    "src": "18750:465:1",
                    "text": "@dev Revokes an existing attestation to a specific schema.\n @param schemaUID The unique identifier of the schema to attest to.\n @param data The arguments of the revocation requests.\n @param revoker The revoking account.\n @param availableValue The total available ETH amount that can be sent to the resolver.\n @param last Whether this is the last attestations/revocations set.\n @return Returns the total sent ETH amount."
                  },
                  "id": 1485,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_revoke",
                  "nameLocation": "19229:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1310,
                        "mutability": "mutable",
                        "name": "schemaUID",
                        "nameLocation": "19254:9:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "19246:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1309,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19246:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1314,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "19304:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "19273:35:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct RevocationRequestData[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1312,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1311,
                              "name": "RevocationRequestData",
                              "nameLocations": [
                                "19273:21:1"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2093,
                              "src": "19273:21:1"
                            },
                            "referencedDeclaration": 2093,
                            "src": "19273:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                              "typeString": "struct RevocationRequestData"
                            }
                          },
                          "id": 1313,
                          "nodeType": "ArrayTypeName",
                          "src": "19273:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                            "typeString": "struct RevocationRequestData[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1316,
                        "mutability": "mutable",
                        "name": "revoker",
                        "nameLocation": "19326:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "19318:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1315,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19318:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1318,
                        "mutability": "mutable",
                        "name": "availableValue",
                        "nameLocation": "19351:14:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "19343:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19343:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1320,
                        "mutability": "mutable",
                        "name": "last",
                        "nameLocation": "19380:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "19375:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1319,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "19375:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19236:154:1"
                  },
                  "returnParameters": {
                    "id": 1324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1323,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1485,
                        "src": "19408:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1322,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19408:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19407:9:1"
                  },
                  "scope": 2019,
                  "src": "19220:2157:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1602,
                    "nodeType": "Block",
                    "src": "22212:1294:1",
                    "statements": [
                      {
                        "assignments": [
                          1507
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1507,
                            "mutability": "mutable",
                            "name": "resolver",
                            "nameLocation": "22238:8:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1602,
                            "src": "22222:24:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                              "typeString": "contract ISchemaResolver"
                            },
                            "typeName": {
                              "id": 1506,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 1505,
                                "name": "ISchemaResolver",
                                "nameLocations": [
                                  "22222:15:1"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2982,
                                "src": "22222:15:1"
                              },
                              "referencedDeclaration": 2982,
                              "src": "22222:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                "typeString": "contract ISchemaResolver"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1510,
                        "initialValue": {
                          "expression": {
                            "id": 1508,
                            "name": "schemaRecord",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1489,
                            "src": "22249:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                              "typeString": "struct SchemaRecord memory"
                            }
                          },
                          "id": 1509,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "22262:8:1",
                          "memberName": "resolver",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2338,
                          "src": "22249:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                            "typeString": "contract ISchemaResolver"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22222:48:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 1513,
                                "name": "resolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1507,
                                "src": "22292:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                  "typeString": "contract ISchemaResolver"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                  "typeString": "contract ISchemaResolver"
                                }
                              ],
                              "id": 1512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22284:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1511,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "22284:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1514,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22284:17:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22313:1:1",
                                "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": 1516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22305:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1515,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "22305:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22305:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "22284:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1538,
                        "nodeType": "IfStatement",
                        "src": "22280:309:1",
                        "trueBody": {
                          "id": 1537,
                          "nodeType": "Block",
                          "src": "22317:272:1",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1522,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1520,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1494,
                                  "src": "22412:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 1521,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22421:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "22412:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1527,
                              "nodeType": "IfStatement",
                              "src": "22408:68:1",
                              "trueBody": {
                                "id": 1526,
                                "nodeType": "Block",
                                "src": "22424:52:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1523,
                                        "name": "NotPayable",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 138,
                                        "src": "22449:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1524,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22449:12:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1525,
                                    "nodeType": "RevertStatement",
                                    "src": "22442:19:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "id": 1528,
                                "name": "last",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1500,
                                "src": "22494:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1534,
                              "nodeType": "IfStatement",
                              "src": "22490:66:1",
                              "trueBody": {
                                "id": 1533,
                                "nodeType": "Block",
                                "src": "22500:56:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 1530,
                                          "name": "availableValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1498,
                                          "src": "22526:14:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1529,
                                        "name": "_refund",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1855,
                                        "src": "22518:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256)"
                                        }
                                      },
                                      "id": 1531,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22518:23:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1532,
                                    "nodeType": "ExpressionStatement",
                                    "src": "22518:23:1"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 1535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22577:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 1504,
                              "id": 1536,
                              "nodeType": "Return",
                              "src": "22570:8:1"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1539,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1494,
                            "src": "22693:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22702:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "22693:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1565,
                        "nodeType": "IfStatement",
                        "src": "22689:449:1",
                        "trueBody": {
                          "id": 1564,
                          "nodeType": "Block",
                          "src": "22705:433:1",
                          "statements": [
                            {
                              "condition": {
                                "id": 1545,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "22723:21:1",
                                "subExpression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "id": 1542,
                                      "name": "resolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1507,
                                      "src": "22724:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                        "typeString": "contract ISchemaResolver"
                                      }
                                    },
                                    "id": 1543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "22733:9:1",
                                    "memberName": "isPayable",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2937,
                                    "src": "22724:18:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$",
                                      "typeString": "function () pure external returns (bool)"
                                    }
                                  },
                                  "id": 1544,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22724:20:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1550,
                              "nodeType": "IfStatement",
                              "src": "22719:79:1",
                              "trueBody": {
                                "id": 1549,
                                "nodeType": "Block",
                                "src": "22746:52:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1546,
                                        "name": "NotPayable",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 138,
                                        "src": "22771:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1547,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22771:12:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1548,
                                    "nodeType": "RevertStatement",
                                    "src": "22764:19:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1551,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1494,
                                  "src": "22906:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 1552,
                                  "name": "availableValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1498,
                                  "src": "22914:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22906:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1558,
                              "nodeType": "IfStatement",
                              "src": "22902:87:1",
                              "trueBody": {
                                "id": 1557,
                                "nodeType": "Block",
                                "src": "22930:59:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1554,
                                        "name": "InsufficientValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 116,
                                        "src": "22955:17:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1555,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "22955:19:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1556,
                                    "nodeType": "RevertStatement",
                                    "src": "22948:26:1"
                                  }
                                ]
                              }
                            },
                            {
                              "id": 1563,
                              "nodeType": "UncheckedBlock",
                              "src": "23062:66:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 1561,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 1559,
                                      "name": "availableValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1498,
                                      "src": "23090:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 1560,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1494,
                                      "src": "23108:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "23090:23:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1562,
                                  "nodeType": "ExpressionStatement",
                                  "src": "23090:23:1"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 1566,
                          "name": "isRevocation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1496,
                          "src": "23152:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "id": 1586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "23310:45:1",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 1584,
                                  "name": "attestation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1492,
                                  "src": "23343:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                    "typeString": "struct Attestation memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                    "typeString": "struct Attestation memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1580,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1507,
                                    "src": "23311:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                      "typeString": "contract ISchemaResolver"
                                    }
                                  },
                                  "id": 1581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "23320:6:1",
                                  "memberName": "attest",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2946,
                                  "src": "23311:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_struct$_Attestation_$49_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (struct Attestation memory) payable external returns (bool)"
                                  }
                                },
                                "id": 1583,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "names": [
                                  "value"
                                ],
                                "nodeType": "FunctionCallOptions",
                                "options": [
                                  {
                                    "id": 1582,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1494,
                                    "src": "23335:5:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "src": "23311:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_struct$_Attestation_$49_memory_ptr_$returns$_t_bool_$value",
                                  "typeString": "function (struct Attestation memory) payable external returns (bool)"
                                }
                              },
                              "id": 1585,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23311:44:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 1591,
                          "nodeType": "IfStatement",
                          "src": "23306:103:1",
                          "trueBody": {
                            "id": 1590,
                            "nodeType": "Block",
                            "src": "23357:52:1",
                            "statements": [
                              {
                                "errorCall": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1587,
                                    "name": "InvalidAttestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 118,
                                    "src": "23378:18:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                      "typeString": "function () pure returns (error)"
                                    }
                                  },
                                  "id": 1588,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23378:20:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_error",
                                    "typeString": "error"
                                  }
                                },
                                "id": 1589,
                                "nodeType": "RevertStatement",
                                "src": "23371:27:1"
                              }
                            ]
                          }
                        },
                        "id": 1592,
                        "nodeType": "IfStatement",
                        "src": "23148:261:1",
                        "trueBody": {
                          "id": 1579,
                          "nodeType": "Block",
                          "src": "23166:134:1",
                          "statements": [
                            {
                              "condition": {
                                "id": 1573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "23184:45:1",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "id": 1571,
                                      "name": "attestation",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1492,
                                      "src": "23217:11:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                        "typeString": "struct Attestation memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                        "typeString": "struct Attestation memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                          "typeString": "struct Attestation memory"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1567,
                                        "name": "resolver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1507,
                                        "src": "23185:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                          "typeString": "contract ISchemaResolver"
                                        }
                                      },
                                      "id": 1568,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "23194:6:1",
                                      "memberName": "revoke",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2968,
                                      "src": "23185:15:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_payable$_t_struct$_Attestation_$49_memory_ptr_$returns$_t_bool_$",
                                        "typeString": "function (struct Attestation memory) payable external returns (bool)"
                                      }
                                    },
                                    "id": 1570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "names": [
                                      "value"
                                    ],
                                    "nodeType": "FunctionCallOptions",
                                    "options": [
                                      {
                                        "id": 1569,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1494,
                                        "src": "23209:5:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "src": "23185:31:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$_t_struct$_Attestation_$49_memory_ptr_$returns$_t_bool_$value",
                                      "typeString": "function (struct Attestation memory) payable external returns (bool)"
                                    }
                                  },
                                  "id": 1572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23185:44:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1578,
                              "nodeType": "IfStatement",
                              "src": "23180:110:1",
                              "trueBody": {
                                "id": 1577,
                                "nodeType": "Block",
                                "src": "23231:59:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1574,
                                        "name": "InvalidRevocation",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 128,
                                        "src": "23256:17:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1575,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "23256:19:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1576,
                                    "nodeType": "RevertStatement",
                                    "src": "23249:26:1"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 1593,
                          "name": "last",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1500,
                          "src": "23423:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1599,
                        "nodeType": "IfStatement",
                        "src": "23419:58:1",
                        "trueBody": {
                          "id": 1598,
                          "nodeType": "Block",
                          "src": "23429:48:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1595,
                                    "name": "availableValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1498,
                                    "src": "23451:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1594,
                                  "name": "_refund",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1855,
                                  "src": "23443:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 1596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23443:23:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1597,
                              "nodeType": "ExpressionStatement",
                              "src": "23443:23:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 1600,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1494,
                          "src": "23494:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1504,
                        "id": 1601,
                        "nodeType": "Return",
                        "src": "23487:12:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1486,
                    "nodeType": "StructuredDocumentation",
                    "src": "21383:580:1",
                    "text": "@dev Resolves a new attestation or a revocation of an existing attestation.\n @param schemaRecord The schema of the attestation.\n @param attestation The data of the attestation to make/revoke.\n @param value An explicit ETH amount to send to the resolver.\n @param isRevocation Whether to resolve an attestation or its revocation.\n @param availableValue The total available ETH amount that can be sent to the resolver.\n @param last Whether this is the last attestations/revocations set.\n @return Returns the total sent ETH amount."
                  },
                  "id": 1603,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_resolveAttestation",
                  "nameLocation": "21977:19:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1489,
                        "mutability": "mutable",
                        "name": "schemaRecord",
                        "nameLocation": "22026:12:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1603,
                        "src": "22006:32:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                          "typeString": "struct SchemaRecord"
                        },
                        "typeName": {
                          "id": 1488,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1487,
                            "name": "SchemaRecord",
                            "nameLocations": [
                              "22006:12:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2343,
                            "src": "22006:12:1"
                          },
                          "referencedDeclaration": 2343,
                          "src": "22006:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                            "typeString": "struct SchemaRecord"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1492,
                        "mutability": "mutable",
                        "name": "attestation",
                        "nameLocation": "22067:11:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1603,
                        "src": "22048:30:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                          "typeString": "struct Attestation"
                        },
                        "typeName": {
                          "id": 1491,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1490,
                            "name": "Attestation",
                            "nameLocations": [
                              "22048:11:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 49,
                            "src": "22048:11:1"
                          },
                          "referencedDeclaration": 49,
                          "src": "22048:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                            "typeString": "struct Attestation"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1494,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "22096:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1603,
                        "src": "22088:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1493,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22088:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1496,
                        "mutability": "mutable",
                        "name": "isRevocation",
                        "nameLocation": "22116:12:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1603,
                        "src": "22111:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1495,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22111:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1498,
                        "mutability": "mutable",
                        "name": "availableValue",
                        "nameLocation": "22146:14:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1603,
                        "src": "22138:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1497,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22138:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1500,
                        "mutability": "mutable",
                        "name": "last",
                        "nameLocation": "22175:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1603,
                        "src": "22170:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1499,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22170:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21996:189:1"
                  },
                  "returnParameters": {
                    "id": 1504,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1503,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1603,
                        "src": "22203:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1502,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22203:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22202:9:1"
                  },
                  "scope": 2019,
                  "src": "21968:1538:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1798,
                    "nodeType": "Block",
                    "src": "24357:1980:1",
                    "statements": [
                      {
                        "assignments": [
                          1626
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1626,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "24375:6:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1798,
                            "src": "24367:14:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1625,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "24367:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1629,
                        "initialValue": {
                          "expression": {
                            "id": 1627,
                            "name": "attestations",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1611,
                            "src": "24384:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Attestation memory[] memory"
                            }
                          },
                          "id": 1628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24397:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "24384:19:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24367:36:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1630,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1626,
                            "src": "24417:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 1631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24427:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "24417:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1647,
                        "nodeType": "IfStatement",
                        "src": "24413:146:1",
                        "trueBody": {
                          "id": 1646,
                          "nodeType": "Block",
                          "src": "24430:129:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1634,
                                    "name": "schemaRecord",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1607,
                                    "src": "24471:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                      "typeString": "struct SchemaRecord memory"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 1635,
                                      "name": "attestations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1611,
                                      "src": "24485:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct Attestation memory[] memory"
                                      }
                                    },
                                    "id": 1637,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 1636,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "24498:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24485:15:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 1638,
                                      "name": "values",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1614,
                                      "src": "24502:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 1640,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 1639,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "24509:1:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24502:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1641,
                                    "name": "isRevocation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1616,
                                    "src": "24513:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "id": 1642,
                                    "name": "availableValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1618,
                                    "src": "24527:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1643,
                                    "name": "last",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1620,
                                    "src": "24543:4:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                      "typeString": "struct SchemaRecord memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 1633,
                                  "name": "_resolveAttestation",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1603,
                                  "src": "24451:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_SchemaRecord_$2343_memory_ptr_$_t_struct$_Attestation_$49_memory_ptr_$_t_uint256_$_t_bool_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (struct SchemaRecord memory,struct Attestation memory,uint256,bool,uint256,bool) returns (uint256)"
                                  }
                                },
                                "id": 1644,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24451:97:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 1624,
                              "id": 1645,
                              "nodeType": "Return",
                              "src": "24444:104:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1650
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1650,
                            "mutability": "mutable",
                            "name": "resolver",
                            "nameLocation": "24585:8:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1798,
                            "src": "24569:24:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                              "typeString": "contract ISchemaResolver"
                            },
                            "typeName": {
                              "id": 1649,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 1648,
                                "name": "ISchemaResolver",
                                "nameLocations": [
                                  "24569:15:1"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2982,
                                "src": "24569:15:1"
                              },
                              "referencedDeclaration": 2982,
                              "src": "24569:15:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                "typeString": "contract ISchemaResolver"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1653,
                        "initialValue": {
                          "expression": {
                            "id": 1651,
                            "name": "schemaRecord",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1607,
                            "src": "24596:12:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                              "typeString": "struct SchemaRecord memory"
                            }
                          },
                          "id": 1652,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "24609:8:1",
                          "memberName": "resolver",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2338,
                          "src": "24596:21:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                            "typeString": "contract ISchemaResolver"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "24569:48:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 1656,
                                "name": "resolver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1650,
                                "src": "24639:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                  "typeString": "contract ISchemaResolver"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                  "typeString": "contract ISchemaResolver"
                                }
                              ],
                              "id": 1655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24631:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1654,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "24631:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1657,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24631:17:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1660,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24660:1:1",
                                "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": 1659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24652:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1658,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "24652:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24652:10:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "24631:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1698,
                        "nodeType": "IfStatement",
                        "src": "24627:406:1",
                        "trueBody": {
                          "id": 1697,
                          "nodeType": "Block",
                          "src": "24664:369:1",
                          "statements": [
                            {
                              "body": {
                                "id": 1686,
                                "nodeType": "Block",
                                "src": "24808:112:1",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1680,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "baseExpression": {
                                          "id": 1676,
                                          "name": "values",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1614,
                                          "src": "24830:6:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 1678,
                                        "indexExpression": {
                                          "id": 1677,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1664,
                                          "src": "24837:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "24830:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 1679,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "24843:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "24830:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 1685,
                                    "nodeType": "IfStatement",
                                    "src": "24826:80:1",
                                    "trueBody": {
                                      "id": 1684,
                                      "nodeType": "Block",
                                      "src": "24846:60:1",
                                      "statements": [
                                        {
                                          "errorCall": {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 1681,
                                              "name": "NotPayable",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 138,
                                              "src": "24875:10:1",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                                "typeString": "function () pure returns (error)"
                                              }
                                            },
                                            "id": 1682,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "24875:12:1",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_error",
                                              "typeString": "error"
                                            }
                                          },
                                          "id": 1683,
                                          "nodeType": "RevertStatement",
                                          "src": "24868:19:1"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1669,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1667,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1664,
                                  "src": "24775:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 1668,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1626,
                                  "src": "24779:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "24775:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1687,
                              "initializationExpression": {
                                "assignments": [
                                  1664
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 1664,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nameLocation": "24768:1:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1687,
                                    "src": "24760:9:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 1663,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24760:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 1666,
                                "initialValue": {
                                  "hexValue": "30",
                                  "id": 1665,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24772:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "24760:13:1"
                              },
                              "isSimpleCounterLoop": false,
                              "loopExpression": {
                                "expression": {
                                  "id": 1674,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1670,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1664,
                                    "src": "24787:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 1672,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1664,
                                        "src": "24804:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1671,
                                      "name": "uncheckedInc",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 65,
                                      "src": "24791:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1673,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24791:15:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "24787:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1675,
                                "nodeType": "ExpressionStatement",
                                "src": "24787:19:1"
                              },
                              "nodeType": "ForStatement",
                              "src": "24755:165:1"
                            },
                            {
                              "condition": {
                                "id": 1688,
                                "name": "last",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1620,
                                "src": "24938:4:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1694,
                              "nodeType": "IfStatement",
                              "src": "24934:66:1",
                              "trueBody": {
                                "id": 1693,
                                "nodeType": "Block",
                                "src": "24944:56:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 1690,
                                          "name": "availableValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1618,
                                          "src": "24970:14:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1689,
                                        "name": "_refund",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1855,
                                        "src": "24962:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                          "typeString": "function (uint256)"
                                        }
                                      },
                                      "id": 1691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "24962:23:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1692,
                                    "nodeType": "ExpressionStatement",
                                    "src": "24962:23:1"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 1695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "25021:1:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 1624,
                              "id": 1696,
                              "nodeType": "Return",
                              "src": "25014:8:1"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          1700
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1700,
                            "mutability": "mutable",
                            "name": "totalUsedValue",
                            "nameLocation": "25051:14:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1798,
                            "src": "25043:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1699,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25043:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1702,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 1701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "25068:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25043:26:1"
                      },
                      {
                        "assignments": [
                          1704
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1704,
                            "mutability": "mutable",
                            "name": "isResolverPayable",
                            "nameLocation": "25084:17:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1798,
                            "src": "25079:22:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 1703,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "25079:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1708,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 1705,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1650,
                              "src": "25104:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                "typeString": "contract ISchemaResolver"
                              }
                            },
                            "id": 1706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "25113:9:1",
                            "memberName": "isPayable",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2937,
                            "src": "25104:18:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_pure$__$returns$_t_bool_$",
                              "typeString": "function () pure external returns (bool)"
                            }
                          },
                          "id": 1707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25104:20:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25079:45:1"
                      },
                      {
                        "body": {
                          "id": 1758,
                          "nodeType": "Block",
                          "src": "25188:724:1",
                          "statements": [
                            {
                              "assignments": [
                                1723
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1723,
                                  "mutability": "mutable",
                                  "name": "value",
                                  "nameLocation": "25210:5:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1758,
                                  "src": "25202:13:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1722,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "25202:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1727,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1724,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1614,
                                  "src": "25218:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 1726,
                                "indexExpression": {
                                  "id": 1725,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1710,
                                  "src": "25225:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "25218:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "25202:25:1"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1728,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1723,
                                  "src": "25340:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 1729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25349:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "25340:10:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1733,
                              "nodeType": "IfStatement",
                              "src": "25336:57:1",
                              "trueBody": {
                                "id": 1732,
                                "nodeType": "Block",
                                "src": "25352:41:1",
                                "statements": [
                                  {
                                    "id": 1731,
                                    "nodeType": "Continue",
                                    "src": "25370:8:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "id": 1735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "25411:18:1",
                                "subExpression": {
                                  "id": 1734,
                                  "name": "isResolverPayable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1704,
                                  "src": "25412:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1740,
                              "nodeType": "IfStatement",
                              "src": "25407:76:1",
                              "trueBody": {
                                "id": 1739,
                                "nodeType": "Block",
                                "src": "25431:52:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1736,
                                        "name": "NotPayable",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 138,
                                        "src": "25456:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1737,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25456:12:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1738,
                                    "nodeType": "RevertStatement",
                                    "src": "25449:19:1"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1741,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1723,
                                  "src": "25591:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 1742,
                                  "name": "availableValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1618,
                                  "src": "25599:14:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25591:22:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1748,
                              "nodeType": "IfStatement",
                              "src": "25587:87:1",
                              "trueBody": {
                                "id": 1747,
                                "nodeType": "Block",
                                "src": "25615:59:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1744,
                                        "name": "InsufficientValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 116,
                                        "src": "25640:17:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1745,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25640:19:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1746,
                                    "nodeType": "RevertStatement",
                                    "src": "25633:26:1"
                                  }
                                ]
                              }
                            },
                            {
                              "id": 1757,
                              "nodeType": "UncheckedBlock",
                              "src": "25795:107:1",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 1751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 1749,
                                      "name": "availableValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1618,
                                      "src": "25823:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 1750,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1723,
                                      "src": "25841:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25823:23:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1752,
                                  "nodeType": "ExpressionStatement",
                                  "src": "25823:23:1"
                                },
                                {
                                  "expression": {
                                    "id": 1755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 1753,
                                      "name": "totalUsedValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1700,
                                      "src": "25864:14:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 1754,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1723,
                                      "src": "25882:5:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25864:23:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1756,
                                  "nodeType": "ExpressionStatement",
                                  "src": "25864:23:1"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1713,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1710,
                            "src": "25155:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1714,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1626,
                            "src": "25159:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "25155:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1759,
                        "initializationExpression": {
                          "assignments": [
                            1710
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1710,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "25148:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 1759,
                              "src": "25140:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1709,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "25140:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1712,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25152:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "25140:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 1720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 1716,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1710,
                              "src": "25167:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 1718,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1710,
                                  "src": "25184:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1717,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "25171:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25171:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "25167:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1721,
                          "nodeType": "ExpressionStatement",
                          "src": "25167:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "25135:777:1"
                      },
                      {
                        "condition": {
                          "id": 1760,
                          "name": "isRevocation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1616,
                          "src": "25926:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "id": 1782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "26108:68:1",
                            "subExpression": {
                              "arguments": [
                                {
                                  "id": 1779,
                                  "name": "attestations",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1611,
                                  "src": "26155:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct Attestation memory[] memory"
                                  }
                                },
                                {
                                  "id": 1780,
                                  "name": "values",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1614,
                                  "src": "26169:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct Attestation memory[] memory"
                                  },
                                  {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct Attestation memory[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1775,
                                    "name": "resolver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1650,
                                    "src": "26109:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                      "typeString": "contract ISchemaResolver"
                                    }
                                  },
                                  "id": 1776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26118:11:1",
                                  "memberName": "multiAttest",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2959,
                                  "src": "26109:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (struct Attestation memory[] memory,uint256[] memory) payable external returns (bool)"
                                  }
                                },
                                "id": 1778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "names": [
                                  "value"
                                ],
                                "nodeType": "FunctionCallOptions",
                                "options": [
                                  {
                                    "id": 1777,
                                    "name": "totalUsedValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1700,
                                    "src": "26138:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "src": "26109:45:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$_t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$value",
                                  "typeString": "function (struct Attestation memory[] memory,uint256[] memory) payable external returns (bool)"
                                }
                              },
                              "id": 1781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26109:67:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 1787,
                          "nodeType": "IfStatement",
                          "src": "26104:127:1",
                          "trueBody": {
                            "id": 1786,
                            "nodeType": "Block",
                            "src": "26178:53:1",
                            "statements": [
                              {
                                "errorCall": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 1783,
                                    "name": "InvalidAttestations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 120,
                                    "src": "26199:19:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                      "typeString": "function () pure returns (error)"
                                    }
                                  },
                                  "id": 1784,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "26199:21:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_error",
                                    "typeString": "error"
                                  }
                                },
                                "id": 1785,
                                "nodeType": "RevertStatement",
                                "src": "26192:28:1"
                              }
                            ]
                          }
                        },
                        "id": 1788,
                        "nodeType": "IfStatement",
                        "src": "25922:309:1",
                        "trueBody": {
                          "id": 1774,
                          "nodeType": "Block",
                          "src": "25940:158:1",
                          "statements": [
                            {
                              "condition": {
                                "id": 1768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "25958:68:1",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "id": 1765,
                                      "name": "attestations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1611,
                                      "src": "26005:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct Attestation memory[] memory"
                                      }
                                    },
                                    {
                                      "id": 1766,
                                      "name": "values",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1614,
                                      "src": "26019:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct Attestation memory[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct Attestation memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1761,
                                        "name": "resolver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1650,
                                        "src": "25959:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                          "typeString": "contract ISchemaResolver"
                                        }
                                      },
                                      "id": 1762,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "25968:11:1",
                                      "memberName": "multiRevoke",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2981,
                                      "src": "25959:20:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_payable$_t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$",
                                        "typeString": "function (struct Attestation memory[] memory,uint256[] memory) payable external returns (bool)"
                                      }
                                    },
                                    "id": 1764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "names": [
                                      "value"
                                    ],
                                    "nodeType": "FunctionCallOptions",
                                    "options": [
                                      {
                                        "id": 1763,
                                        "name": "totalUsedValue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1700,
                                        "src": "25988:14:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "src": "25959:45:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_payable$_t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_bool_$value",
                                      "typeString": "function (struct Attestation memory[] memory,uint256[] memory) payable external returns (bool)"
                                    }
                                  },
                                  "id": 1767,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25959:67:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1773,
                              "nodeType": "IfStatement",
                              "src": "25954:134:1",
                              "trueBody": {
                                "id": 1772,
                                "nodeType": "Block",
                                "src": "26028:60:1",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 1769,
                                        "name": "InvalidRevocations",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 130,
                                        "src": "26053:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                          "typeString": "function () pure returns (error)"
                                        }
                                      },
                                      "id": 1770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26053:20:1",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 1771,
                                    "nodeType": "RevertStatement",
                                    "src": "26046:27:1"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 1789,
                          "name": "last",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1620,
                          "src": "26245:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1795,
                        "nodeType": "IfStatement",
                        "src": "26241:58:1",
                        "trueBody": {
                          "id": 1794,
                          "nodeType": "Block",
                          "src": "26251:48:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1791,
                                    "name": "availableValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1618,
                                    "src": "26273:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1790,
                                  "name": "_refund",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1855,
                                  "src": "26265:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 1792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26265:23:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1793,
                              "nodeType": "ExpressionStatement",
                              "src": "26265:23:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 1796,
                          "name": "totalUsedValue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1700,
                          "src": "26316:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 1624,
                        "id": 1797,
                        "nodeType": "Return",
                        "src": "26309:21:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1604,
                    "nodeType": "StructuredDocumentation",
                    "src": "23512:582:1",
                    "text": "@dev Resolves multiple attestations or revocations of existing attestations.\n @param schemaRecord The schema of the attestation.\n @param attestations The data of the attestations to make/revoke.\n @param values Explicit ETH amounts to send to the resolver.\n @param isRevocation Whether to resolve an attestation or its revocation.\n @param availableValue The total available ETH amount that can be sent to the resolver.\n @param last Whether this is the last attestations/revocations set.\n @return Returns the total sent ETH amount."
                  },
                  "id": 1799,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_resolveAttestations",
                  "nameLocation": "24108:20:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1621,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1607,
                        "mutability": "mutable",
                        "name": "schemaRecord",
                        "nameLocation": "24158:12:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1799,
                        "src": "24138:32:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                          "typeString": "struct SchemaRecord"
                        },
                        "typeName": {
                          "id": 1606,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1605,
                            "name": "SchemaRecord",
                            "nameLocations": [
                              "24138:12:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2343,
                            "src": "24138:12:1"
                          },
                          "referencedDeclaration": 2343,
                          "src": "24138:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                            "typeString": "struct SchemaRecord"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1611,
                        "mutability": "mutable",
                        "name": "attestations",
                        "nameLocation": "24201:12:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1799,
                        "src": "24180:33:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Attestation_$49_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Attestation[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1609,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1608,
                              "name": "Attestation",
                              "nameLocations": [
                                "24180:11:1"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 49,
                              "src": "24180:11:1"
                            },
                            "referencedDeclaration": 49,
                            "src": "24180:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                              "typeString": "struct Attestation"
                            }
                          },
                          "id": 1610,
                          "nodeType": "ArrayTypeName",
                          "src": "24180:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Attestation_$49_storage_$dyn_storage_ptr",
                            "typeString": "struct Attestation[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1614,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "24240:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1799,
                        "src": "24223:23:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1612,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "24223:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1613,
                          "nodeType": "ArrayTypeName",
                          "src": "24223:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1616,
                        "mutability": "mutable",
                        "name": "isRevocation",
                        "nameLocation": "24261:12:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1799,
                        "src": "24256:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1615,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24256:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1618,
                        "mutability": "mutable",
                        "name": "availableValue",
                        "nameLocation": "24291:14:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1799,
                        "src": "24283:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1617,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24283:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1620,
                        "mutability": "mutable",
                        "name": "last",
                        "nameLocation": "24320:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1799,
                        "src": "24315:9:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1619,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24315:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24128:202:1"
                  },
                  "returnParameters": {
                    "id": 1624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1623,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1799,
                        "src": "24348:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24348:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24347:9:1"
                  },
                  "scope": 2019,
                  "src": "24099:2238:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1833,
                    "nodeType": "Block",
                    "src": "26641:469:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 1813,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1803,
                                    "src": "26735:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1814,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26747:6:1",
                                  "memberName": "schema",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 32,
                                  "src": "26735:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1815,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1803,
                                    "src": "26775:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1816,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26787:9:1",
                                  "memberName": "recipient",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 42,
                                  "src": "26775:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1817,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1803,
                                    "src": "26818:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1818,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26830:8:1",
                                  "memberName": "attester",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 44,
                                  "src": "26818:20:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1819,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1803,
                                    "src": "26860:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1820,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26872:4:1",
                                  "memberName": "time",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 34,
                                  "src": "26860:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1821,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1803,
                                    "src": "26898:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1822,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26910:14:1",
                                  "memberName": "expirationTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 36,
                                  "src": "26898:26:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1823,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1803,
                                    "src": "26946:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1824,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26958:9:1",
                                  "memberName": "revocable",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 46,
                                  "src": "26946:21:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1825,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1803,
                                    "src": "26989:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1826,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "27001:6:1",
                                  "memberName": "refUID",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 40,
                                  "src": "26989:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 1827,
                                    "name": "attestation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1803,
                                    "src": "27029:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                                      "typeString": "struct Attestation memory"
                                    }
                                  },
                                  "id": 1828,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "27041:4:1",
                                  "memberName": "data",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 48,
                                  "src": "27029:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "id": 1829,
                                  "name": "bump",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1805,
                                  "src": "27067:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                ],
                                "expression": {
                                  "id": 1811,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "26697:3:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 1812,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "26701:12:1",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "26697:16:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 1830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26697:392:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 1810,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "26670:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 1831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26670:433:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 1809,
                        "id": 1832,
                        "nodeType": "Return",
                        "src": "26651:452:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1800,
                    "nodeType": "StructuredDocumentation",
                    "src": "26343:200:1",
                    "text": "@dev Calculates a UID for a given attestation.\n @param attestation The input attestation.\n @param bump A bump value to use in case of a UID conflict.\n @return Attestation UID."
                  },
                  "id": 1834,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getUID",
                  "nameLocation": "26557:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1806,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1803,
                        "mutability": "mutable",
                        "name": "attestation",
                        "nameLocation": "26584:11:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1834,
                        "src": "26565:30:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                          "typeString": "struct Attestation"
                        },
                        "typeName": {
                          "id": 1802,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1801,
                            "name": "Attestation",
                            "nameLocations": [
                              "26565:11:1"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 49,
                            "src": "26565:11:1"
                          },
                          "referencedDeclaration": 49,
                          "src": "26565:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                            "typeString": "struct Attestation"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1805,
                        "mutability": "mutable",
                        "name": "bump",
                        "nameLocation": "26604:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1834,
                        "src": "26597:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 1804,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26597:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26564:45:1"
                  },
                  "returnParameters": {
                    "id": 1809,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1808,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1834,
                        "src": "26632:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1807,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26632:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26631:9:1"
                  },
                  "scope": 2019,
                  "src": "26548:562:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1854,
                    "nodeType": "Block",
                    "src": "27314:366:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1840,
                            "name": "remainingValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1837,
                            "src": "27328:14:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27345:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "27328:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1853,
                        "nodeType": "IfStatement",
                        "src": "27324:350:1",
                        "trueBody": {
                          "id": 1852,
                          "nodeType": "Block",
                          "src": "27348:326:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1849,
                                    "name": "remainingValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1837,
                                    "src": "27648:14:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 1845,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "27626:3:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1846,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "27630:6:1",
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "27626:10:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1844,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "27618:8:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 1843,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "27618:8:1",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1847,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "27618:19:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "id": 1848,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "27638:9:1",
                                  "memberName": "sendValue",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3095,
                                  "src": "27618:29:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 1850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27618:45:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1851,
                              "nodeType": "ExpressionStatement",
                              "src": "27618:45:1"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1835,
                    "nodeType": "StructuredDocumentation",
                    "src": "27116:144:1",
                    "text": "@dev Refunds remaining ETH amount to the attester.\n @param remainingValue The remaining ETH amount that was not sent to the resolver."
                  },
                  "id": 1855,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_refund",
                  "nameLocation": "27274:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1838,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1837,
                        "mutability": "mutable",
                        "name": "remainingValue",
                        "nameLocation": "27290:14:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1855,
                        "src": "27282:22:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1836,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27282:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27281:24:1"
                  },
                  "returnParameters": {
                    "id": 1839,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27314:0:1"
                  },
                  "scope": 2019,
                  "src": "27265:415:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1884,
                    "nodeType": "Block",
                    "src": "27871:170:1",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 1867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 1863,
                              "name": "_timestamps",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "27885:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                "typeString": "mapping(bytes32 => uint64)"
                              }
                            },
                            "id": 1865,
                            "indexExpression": {
                              "id": 1864,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1858,
                              "src": "27897:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "27885:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27906:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "27885:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1872,
                        "nodeType": "IfStatement",
                        "src": "27881:80:1",
                        "trueBody": {
                          "id": 1871,
                          "nodeType": "Block",
                          "src": "27909:52:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1868,
                                  "name": "AlreadyTimestamped",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 114,
                                  "src": "27930:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 1869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27930:20:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1870,
                              "nodeType": "RevertStatement",
                              "src": "27923:27:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 1877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1873,
                              "name": "_timestamps",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 159,
                              "src": "27971:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                "typeString": "mapping(bytes32 => uint64)"
                              }
                            },
                            "id": 1875,
                            "indexExpression": {
                              "id": 1874,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1858,
                              "src": "27983:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "27971:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1876,
                            "name": "time",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1860,
                            "src": "27991:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "27971:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 1878,
                        "nodeType": "ExpressionStatement",
                        "src": "27971:24:1"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1880,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1858,
                              "src": "28023:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 1881,
                              "name": "time",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1860,
                              "src": "28029:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 1879,
                            "name": "Timestamped",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2170,
                            "src": "28011:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (bytes32,uint64)"
                            }
                          },
                          "id": 1882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28011:23:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1883,
                        "nodeType": "EmitStatement",
                        "src": "28006:28:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1856,
                    "nodeType": "StructuredDocumentation",
                    "src": "27686:125:1",
                    "text": "@dev Timestamps the specified bytes32 data.\n @param data The data to timestamp.\n @param time The timestamp."
                  },
                  "id": 1885,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_timestamp",
                  "nameLocation": "27825:10:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1861,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1858,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "27844:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1885,
                        "src": "27836:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1857,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "27836:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1860,
                        "mutability": "mutable",
                        "name": "time",
                        "nameLocation": "27857:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1885,
                        "src": "27850:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 1859,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "27850:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27835:27:1"
                  },
                  "returnParameters": {
                    "id": 1862,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27871:0:1"
                  },
                  "scope": 2019,
                  "src": "27816:225:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 1925,
                    "nodeType": "Block",
                    "src": "28319:291:1",
                    "statements": [
                      {
                        "assignments": [
                          1898
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1898,
                            "mutability": "mutable",
                            "name": "revocations",
                            "nameLocation": "28379:11:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 1925,
                            "src": "28329:61:1",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                              "typeString": "mapping(bytes32 => uint64)"
                            },
                            "typeName": {
                              "id": 1897,
                              "keyName": "data",
                              "keyNameLocation": "28345:4:1",
                              "keyType": {
                                "id": 1895,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "28337:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "Mapping",
                              "src": "28329:41:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                "typeString": "mapping(bytes32 => uint64)"
                              },
                              "valueName": "timestamp",
                              "valueNameLocation": "28360:9:1",
                              "valueType": {
                                "id": 1896,
                                "name": "uint64",
                                "nodeType": "ElementaryTypeName",
                                "src": "28353:6:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1902,
                        "initialValue": {
                          "baseExpression": {
                            "id": 1899,
                            "name": "_revocationsOffchain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 165,
                            "src": "28393:20:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint64_$_$",
                              "typeString": "mapping(address => mapping(bytes32 => uint64))"
                            }
                          },
                          "id": 1901,
                          "indexExpression": {
                            "id": 1900,
                            "name": "revoker",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1888,
                            "src": "28414:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "28393:29:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                            "typeString": "mapping(bytes32 => uint64)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28329:93:1"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          },
                          "id": 1907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "id": 1903,
                              "name": "revocations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1898,
                              "src": "28437:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                "typeString": "mapping(bytes32 => uint64)"
                              }
                            },
                            "id": 1905,
                            "indexExpression": {
                              "id": 1904,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1890,
                              "src": "28449:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "28437:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28458:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "28437:22:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1912,
                        "nodeType": "IfStatement",
                        "src": "28433:84:1",
                        "trueBody": {
                          "id": 1911,
                          "nodeType": "Block",
                          "src": "28461:56:1",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1908,
                                  "name": "AlreadyRevokedOffchain",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 112,
                                  "src": "28482:22:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 1909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28482:24:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 1910,
                              "nodeType": "RevertStatement",
                              "src": "28475:31:1"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 1917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1913,
                              "name": "revocations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1898,
                              "src": "28527:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint64_$",
                                "typeString": "mapping(bytes32 => uint64)"
                              }
                            },
                            "id": 1915,
                            "indexExpression": {
                              "id": 1914,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1890,
                              "src": "28539:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "28527:17:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1916,
                            "name": "time",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1892,
                            "src": "28547:4:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "28527:24:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 1918,
                        "nodeType": "ExpressionStatement",
                        "src": "28527:24:1"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1920,
                              "name": "revoker",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1888,
                              "src": "28583:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1921,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1890,
                              "src": "28592:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 1922,
                              "name": "time",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1892,
                              "src": "28598:4:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            ],
                            "id": 1919,
                            "name": "RevokedOffchain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2179,
                            "src": "28567:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint64_$returns$__$",
                              "typeString": "function (address,bytes32,uint64)"
                            }
                          },
                          "id": 1923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28567:36:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1924,
                        "nodeType": "EmitStatement",
                        "src": "28562:41:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1886,
                    "nodeType": "StructuredDocumentation",
                    "src": "28047:190:1",
                    "text": "@dev Revokes the specified bytes32 data.\n @param revoker The revoking account.\n @param data The data to revoke.\n @param time The timestamp the data was revoked with."
                  },
                  "id": 1926,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_revokeOffchain",
                  "nameLocation": "28251:15:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1888,
                        "mutability": "mutable",
                        "name": "revoker",
                        "nameLocation": "28275:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1926,
                        "src": "28267:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1887,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28267:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1890,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "28292:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1926,
                        "src": "28284:12:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1889,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "28284:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1892,
                        "mutability": "mutable",
                        "name": "time",
                        "nameLocation": "28305:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1926,
                        "src": "28298:11:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 1891,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "28298:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28266:44:1"
                  },
                  "returnParameters": {
                    "id": 1894,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28319:0:1"
                  },
                  "scope": 2019,
                  "src": "28242:368:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2017,
                    "nodeType": "Block",
                    "src": "28910:594:1",
                    "statements": [
                      {
                        "assignments": [
                          1943
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1943,
                            "mutability": "mutable",
                            "name": "uids",
                            "nameLocation": "28937:4:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 2017,
                            "src": "28920:21:1",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1941,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "28920:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1942,
                              "nodeType": "ArrayTypeName",
                              "src": "28920:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1949,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1947,
                              "name": "uidCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1933,
                              "src": "28958:8:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "28944:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes32[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1944,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "28948:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1945,
                              "nodeType": "ArrayTypeName",
                              "src": "28948:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            }
                          },
                          "id": 1948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28944:23:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28920:47:1"
                      },
                      {
                        "assignments": [
                          1951
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1951,
                            "mutability": "mutable",
                            "name": "currentIndex",
                            "nameLocation": "28986:12:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 2017,
                            "src": "28978:20:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1950,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "28978:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1953,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 1952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29001:1:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28978:24:1"
                      },
                      {
                        "assignments": [
                          1955
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1955,
                            "mutability": "mutable",
                            "name": "uidListLength",
                            "nameLocation": "29020:13:1",
                            "nodeType": "VariableDeclaration",
                            "scope": 2017,
                            "src": "29012:21:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1954,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "29012:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1958,
                        "initialValue": {
                          "expression": {
                            "id": 1956,
                            "name": "uidLists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1931,
                            "src": "29036:8:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes32[] memory[] memory"
                            }
                          },
                          "id": 1957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "29045:6:1",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "29036:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29012:39:1"
                      },
                      {
                        "body": {
                          "id": 2013,
                          "nodeType": "Block",
                          "src": "29121:355:1",
                          "statements": [
                            {
                              "assignments": [
                                1976
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1976,
                                  "mutability": "mutable",
                                  "name": "currentUIDs",
                                  "nameLocation": "29152:11:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2013,
                                  "src": "29135:28:1",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1974,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "29135:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 1975,
                                    "nodeType": "ArrayTypeName",
                                    "src": "29135:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                      "typeString": "bytes32[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1980,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 1977,
                                  "name": "uidLists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1931,
                                  "src": "29166:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory[] memory"
                                  }
                                },
                                "id": 1979,
                                "indexExpression": {
                                  "id": 1978,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1960,
                                  "src": "29175:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "29166:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                  "typeString": "bytes32[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29135:42:1"
                            },
                            {
                              "assignments": [
                                1982
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1982,
                                  "mutability": "mutable",
                                  "name": "currentUIDsLength",
                                  "nameLocation": "29199:17:1",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2013,
                                  "src": "29191:25:1",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1981,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "29191:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1985,
                              "initialValue": {
                                "expression": {
                                  "id": 1983,
                                  "name": "currentUIDs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1976,
                                  "src": "29219:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "id": 1984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "29231:6:1",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "29219:18:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29191:46:1"
                            },
                            {
                              "body": {
                                "id": 2011,
                                "nodeType": "Block",
                                "src": "29315:151:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 2005,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 1999,
                                          "name": "uids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1943,
                                          "src": "29333:4:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                            "typeString": "bytes32[] memory"
                                          }
                                        },
                                        "id": 2001,
                                        "indexExpression": {
                                          "id": 2000,
                                          "name": "currentIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1951,
                                          "src": "29338:12:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "29333:18:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "baseExpression": {
                                          "id": 2002,
                                          "name": "currentUIDs",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1976,
                                          "src": "29354:11:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                            "typeString": "bytes32[] memory"
                                          }
                                        },
                                        "id": 2004,
                                        "indexExpression": {
                                          "id": 2003,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1987,
                                          "src": "29366:1:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "29354:14:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "29333:35:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 2006,
                                    "nodeType": "ExpressionStatement",
                                    "src": "29333:35:1"
                                  },
                                  {
                                    "id": 2010,
                                    "nodeType": "UncheckedBlock",
                                    "src": "29387:65:1",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 2008,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": true,
                                          "src": "29419:14:1",
                                          "subExpression": {
                                            "id": 2007,
                                            "name": "currentIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1951,
                                            "src": "29421:12:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2009,
                                        "nodeType": "ExpressionStatement",
                                        "src": "29419:14:1"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1992,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1990,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1987,
                                  "src": "29271:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 1991,
                                  "name": "currentUIDsLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1982,
                                  "src": "29275:17:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "29271:21:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2012,
                              "initializationExpression": {
                                "assignments": [
                                  1987
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 1987,
                                    "mutability": "mutable",
                                    "name": "j",
                                    "nameLocation": "29264:1:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2012,
                                    "src": "29256:9:1",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 1986,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "29256:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 1989,
                                "initialValue": {
                                  "hexValue": "30",
                                  "id": 1988,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29268:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "29256:13:1"
                              },
                              "isSimpleCounterLoop": false,
                              "loopExpression": {
                                "expression": {
                                  "id": 1997,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 1993,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1987,
                                    "src": "29294:1:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 1995,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1987,
                                        "src": "29311:1:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1994,
                                      "name": "uncheckedInc",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 65,
                                      "src": "29298:12:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1996,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "29298:15:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "29294:19:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1998,
                                "nodeType": "ExpressionStatement",
                                "src": "29294:19:1"
                              },
                              "nodeType": "ForStatement",
                              "src": "29251:215:1"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1963,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1960,
                            "src": "29081:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1964,
                            "name": "uidListLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1955,
                            "src": "29085:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29081:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2014,
                        "initializationExpression": {
                          "assignments": [
                            1960
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1960,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "29074:1:1",
                              "nodeType": "VariableDeclaration",
                              "scope": 2014,
                              "src": "29066:9:1",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1959,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "29066:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1962,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29078:1:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "29066:13:1"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 1970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 1966,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1960,
                              "src": "29100:1:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 1968,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1960,
                                  "src": "29117:1:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1967,
                                "name": "uncheckedInc",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65,
                                "src": "29104:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 1969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29104:15:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "29100:19:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1971,
                          "nodeType": "ExpressionStatement",
                          "src": "29100:19:1"
                        },
                        "nodeType": "ForStatement",
                        "src": "29061:415:1"
                      },
                      {
                        "expression": {
                          "id": 2015,
                          "name": "uids",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1943,
                          "src": "29493:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "functionReturnParameters": 1938,
                        "id": 2016,
                        "nodeType": "Return",
                        "src": "29486:11:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1927,
                    "nodeType": "StructuredDocumentation",
                    "src": "28616:182:1",
                    "text": "@dev Merges lists of UIDs.\n @param uidLists The provided lists of UIDs.\n @param uidCount Total UID count.\n @return A merged and flatten list of all the UIDs."
                  },
                  "id": 2018,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mergeUIDs",
                  "nameLocation": "28812:10:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1931,
                        "mutability": "mutable",
                        "name": "uidLists",
                        "nameLocation": "28842:8:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2018,
                        "src": "28823:27:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes32[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 1928,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "28823:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 1929,
                            "nodeType": "ArrayTypeName",
                            "src": "28823:9:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                              "typeString": "bytes32[]"
                            }
                          },
                          "id": 1930,
                          "nodeType": "ArrayTypeName",
                          "src": "28823:11:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_bytes32_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "bytes32[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1933,
                        "mutability": "mutable",
                        "name": "uidCount",
                        "nameLocation": "28860:8:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2018,
                        "src": "28852:16:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28852:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28822:47:1"
                  },
                  "returnParameters": {
                    "id": 1938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1937,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2018,
                        "src": "28892:16:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1935,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "28892:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 1936,
                          "nodeType": "ArrayTypeName",
                          "src": "28892:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28891:18:1"
                  },
                  "scope": 2019,
                  "src": "28803:701:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 2020,
              "src": "976:28530:1",
              "usedErrors": [
                9,
                11,
                15,
                17,
                19,
                110,
                112,
                114,
                116,
                118,
                120,
                122,
                124,
                126,
                128,
                130,
                132,
                134,
                136,
                138,
                140,
                2614,
                3538,
                3541,
                3616,
                3618
              ],
              "usedEvents": [
                2152,
                2163,
                2170,
                2179,
                2633,
                3001
              ]
            }
          ],
          "src": "33:29474:1"
        },
        "id": 1
      },
      "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol",
          "exportedSymbols": {
            "Attestation": [
              49
            ],
            "AttestationRequest": [
              2049
            ],
            "AttestationRequestData": [
              2042
            ],
            "DelegatedAttestationRequest": [
              2063
            ],
            "DelegatedRevocationRequest": [
              2114
            ],
            "IEAS": [
              2326
            ],
            "ISchemaRegistry": [
              2379
            ],
            "ISemver": [
              2389
            ],
            "MultiAttestationRequest": [
              2071
            ],
            "MultiDelegatedAttestationRequest": [
              2087
            ],
            "MultiDelegatedRevocationRequest": [
              2138
            ],
            "MultiRevocationRequest": [
              2122
            ],
            "RevocationRequest": [
              2100
            ],
            "RevocationRequestData": [
              2093
            ],
            "Signature": [
              27
            ]
          },
          "id": 2327,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2021,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:2"
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol",
              "file": "./ISchemaRegistry.sol",
              "id": 2023,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2327,
              "sourceUnit": 2380,
              "src": "58:56:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2022,
                    "name": "ISchemaRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2379,
                    "src": "67:15:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol",
              "file": "./ISemver.sol",
              "id": 2025,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2327,
              "sourceUnit": 2390,
              "src": "115:40:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2024,
                    "name": "ISemver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2389,
                    "src": "124:7:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Common.sol",
              "file": "./Common.sol",
              "id": 2028,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2327,
              "sourceUnit": 66,
              "src": "156:54:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2026,
                    "name": "Attestation",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 49,
                    "src": "165:11:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2027,
                    "name": "Signature",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27,
                    "src": "178:9:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "canonicalName": "AttestationRequestData",
              "documentation": {
                "id": 2029,
                "nodeType": "StructuredDocumentation",
                "src": "212:76:2",
                "text": "@notice A struct representing the arguments of the attestation request."
              },
              "id": 2042,
              "members": [
                {
                  "constant": false,
                  "id": 2031,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "332:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2042,
                  "src": "324:17:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2030,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "324:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2033,
                  "mutability": "mutable",
                  "name": "expirationTime",
                  "nameLocation": "391:14:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2042,
                  "src": "384:21:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2032,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "384:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2035,
                  "mutability": "mutable",
                  "name": "revocable",
                  "nameLocation": "475:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2042,
                  "src": "470:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2034,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "470:4:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2037,
                  "mutability": "mutable",
                  "name": "refUID",
                  "nameLocation": "539:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2042,
                  "src": "531:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2036,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "531:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2039,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "596:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2042,
                  "src": "590:10:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2038,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "590:5:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2041,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "642:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2042,
                  "src": "634:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2040,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "634:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "AttestationRequestData",
              "nameLocation": "295:22:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "288:466:2",
              "visibility": "public"
            },
            {
              "canonicalName": "AttestationRequest",
              "documentation": {
                "id": 2043,
                "nodeType": "StructuredDocumentation",
                "src": "756:81:2",
                "text": "@notice A struct representing the full arguments of the attestation request."
              },
              "id": 2049,
              "members": [
                {
                  "constant": false,
                  "id": 2045,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "877:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "869:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2044,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "869:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2048,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "952:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2049,
                  "src": "929:27:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                    "typeString": "struct AttestationRequestData"
                  },
                  "typeName": {
                    "id": 2047,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2046,
                      "name": "AttestationRequestData",
                      "nameLocations": [
                        "929:22:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2042,
                      "src": "929:22:2"
                    },
                    "referencedDeclaration": 2042,
                    "src": "929:22:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                      "typeString": "struct AttestationRequestData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "AttestationRequest",
              "nameLocation": "844:18:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "837:167:2",
              "visibility": "public"
            },
            {
              "canonicalName": "DelegatedAttestationRequest",
              "documentation": {
                "id": 2050,
                "nodeType": "StructuredDocumentation",
                "src": "1006:96:2",
                "text": "@notice A struct representing the full arguments of the full delegated attestation request."
              },
              "id": 2063,
              "members": [
                {
                  "constant": false,
                  "id": 2052,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "1151:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2063,
                  "src": "1143:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2051,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1143:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2055,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "1226:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2063,
                  "src": "1203:27:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                    "typeString": "struct AttestationRequestData"
                  },
                  "typeName": {
                    "id": 2054,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2053,
                      "name": "AttestationRequestData",
                      "nameLocations": [
                        "1203:22:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2042,
                      "src": "1203:22:2"
                    },
                    "referencedDeclaration": 2042,
                    "src": "1203:22:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                      "typeString": "struct AttestationRequestData"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2058,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "1291:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2063,
                  "src": "1281:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Signature_$27_storage_ptr",
                    "typeString": "struct Signature"
                  },
                  "typeName": {
                    "id": 2057,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2056,
                      "name": "Signature",
                      "nameLocations": [
                        "1281:9:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27,
                      "src": "1281:9:2"
                    },
                    "referencedDeclaration": 27,
                    "src": "1281:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Signature_$27_storage_ptr",
                      "typeString": "struct Signature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2060,
                  "mutability": "mutable",
                  "name": "attester",
                  "nameLocation": "1343:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2063,
                  "src": "1335:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2059,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1335:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2062,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nameLocation": "1390:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2063,
                  "src": "1383:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2061,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1383:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "DelegatedAttestationRequest",
              "nameLocation": "1109:27:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "1102:341:2",
              "visibility": "public"
            },
            {
              "canonicalName": "MultiAttestationRequest",
              "documentation": {
                "id": 2064,
                "nodeType": "StructuredDocumentation",
                "src": "1445:87:2",
                "text": "@notice A struct representing the full arguments of the multi attestation request."
              },
              "id": 2071,
              "members": [
                {
                  "constant": false,
                  "id": 2066,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "1577:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2071,
                  "src": "1569:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2065,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1569:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2070,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "1654:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2071,
                  "src": "1629:29:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                    "typeString": "struct AttestationRequestData[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2068,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2067,
                        "name": "AttestationRequestData",
                        "nameLocations": [
                          "1629:22:2"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2042,
                        "src": "1629:22:2"
                      },
                      "referencedDeclaration": 2042,
                      "src": "1629:22:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                        "typeString": "struct AttestationRequestData"
                      }
                    },
                    "id": 2069,
                    "nodeType": "ArrayTypeName",
                    "src": "1629:24:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                      "typeString": "struct AttestationRequestData[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "MultiAttestationRequest",
              "nameLocation": "1539:23:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "1532:174:2",
              "visibility": "public"
            },
            {
              "canonicalName": "MultiDelegatedAttestationRequest",
              "documentation": {
                "id": 2072,
                "nodeType": "StructuredDocumentation",
                "src": "1708:97:2",
                "text": "@notice A struct representing the full arguments of the delegated multi attestation request."
              },
              "id": 2087,
              "members": [
                {
                  "constant": false,
                  "id": 2074,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "1859:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2087,
                  "src": "1851:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2073,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1851:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2078,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "1936:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2087,
                  "src": "1911:29:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                    "typeString": "struct AttestationRequestData[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2076,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2075,
                        "name": "AttestationRequestData",
                        "nameLocations": [
                          "1911:22:2"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2042,
                        "src": "1911:22:2"
                      },
                      "referencedDeclaration": 2042,
                      "src": "1911:22:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                        "typeString": "struct AttestationRequestData"
                      }
                    },
                    "id": 2077,
                    "nodeType": "ArrayTypeName",
                    "src": "1911:24:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_AttestationRequestData_$2042_storage_$dyn_storage_ptr",
                      "typeString": "struct AttestationRequestData[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2082,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nameLocation": "2004:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2087,
                  "src": "1992:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Signature_$27_storage_$dyn_storage_ptr",
                    "typeString": "struct Signature[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2080,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2079,
                        "name": "Signature",
                        "nameLocations": [
                          "1992:9:2"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 27,
                        "src": "1992:9:2"
                      },
                      "referencedDeclaration": 27,
                      "src": "1992:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Signature_$27_storage_ptr",
                        "typeString": "struct Signature"
                      }
                    },
                    "id": 2081,
                    "nodeType": "ArrayTypeName",
                    "src": "1992:11:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Signature_$27_storage_$dyn_storage_ptr",
                      "typeString": "struct Signature[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2084,
                  "mutability": "mutable",
                  "name": "attester",
                  "nameLocation": "2139:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2087,
                  "src": "2131:16:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2083,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2131:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2086,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nameLocation": "2186:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2087,
                  "src": "2179:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2085,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2179:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "MultiDelegatedAttestationRequest",
              "nameLocation": "1812:32:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "1805:434:2",
              "visibility": "public"
            },
            {
              "canonicalName": "RevocationRequestData",
              "documentation": {
                "id": 2088,
                "nodeType": "StructuredDocumentation",
                "src": "2241:75:2",
                "text": "@notice A struct representing the arguments of the revocation request."
              },
              "id": 2093,
              "members": [
                {
                  "constant": false,
                  "id": 2090,
                  "mutability": "mutable",
                  "name": "uid",
                  "nameLocation": "2359:3:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2093,
                  "src": "2351:11:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2089,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2351:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2092,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "2417:5:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2093,
                  "src": "2409:13:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2091,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2409:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "RevocationRequestData",
              "nameLocation": "2323:21:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "2316:213:2",
              "visibility": "public"
            },
            {
              "canonicalName": "RevocationRequest",
              "documentation": {
                "id": 2094,
                "nodeType": "StructuredDocumentation",
                "src": "2531:80:2",
                "text": "@notice A struct representing the full arguments of the revocation request."
              },
              "id": 2100,
              "members": [
                {
                  "constant": false,
                  "id": 2096,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "2650:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2100,
                  "src": "2642:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2095,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2642:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2099,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "2724:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2100,
                  "src": "2702:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                    "typeString": "struct RevocationRequestData"
                  },
                  "typeName": {
                    "id": 2098,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2097,
                      "name": "RevocationRequestData",
                      "nameLocations": [
                        "2702:21:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2093,
                      "src": "2702:21:2"
                    },
                    "referencedDeclaration": 2093,
                    "src": "2702:21:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                      "typeString": "struct RevocationRequestData"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "RevocationRequest",
              "nameLocation": "2618:17:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "2611:164:2",
              "visibility": "public"
            },
            {
              "canonicalName": "DelegatedRevocationRequest",
              "documentation": {
                "id": 2101,
                "nodeType": "StructuredDocumentation",
                "src": "2777:90:2",
                "text": "@notice A struct representing the arguments of the full delegated revocation request."
              },
              "id": 2114,
              "members": [
                {
                  "constant": false,
                  "id": 2103,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "2915:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2114,
                  "src": "2907:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2102,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2907:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2106,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "2989:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2114,
                  "src": "2967:26:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                    "typeString": "struct RevocationRequestData"
                  },
                  "typeName": {
                    "id": 2105,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2104,
                      "name": "RevocationRequestData",
                      "nameLocations": [
                        "2967:21:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2093,
                      "src": "2967:21:2"
                    },
                    "referencedDeclaration": 2093,
                    "src": "2967:21:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                      "typeString": "struct RevocationRequestData"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2109,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "3053:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2114,
                  "src": "3043:19:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Signature_$27_storage_ptr",
                    "typeString": "struct Signature"
                  },
                  "typeName": {
                    "id": 2108,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2107,
                      "name": "Signature",
                      "nameLocations": [
                        "3043:9:2"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27,
                      "src": "3043:9:2"
                    },
                    "referencedDeclaration": 27,
                    "src": "3043:9:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Signature_$27_storage_ptr",
                      "typeString": "struct Signature"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2111,
                  "mutability": "mutable",
                  "name": "revoker",
                  "nameLocation": "3105:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2114,
                  "src": "3097:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2110,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3097:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2113,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nameLocation": "3150:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2114,
                  "src": "3143:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2112,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3143:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "DelegatedRevocationRequest",
              "nameLocation": "2874:26:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "2867:336:2",
              "visibility": "public"
            },
            {
              "canonicalName": "MultiRevocationRequest",
              "documentation": {
                "id": 2115,
                "nodeType": "StructuredDocumentation",
                "src": "3205:86:2",
                "text": "@notice A struct representing the full arguments of the multi revocation request."
              },
              "id": 2122,
              "members": [
                {
                  "constant": false,
                  "id": 2117,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "3335:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "3327:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2116,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3327:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2121,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "3411:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2122,
                  "src": "3387:28:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                    "typeString": "struct RevocationRequestData[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2119,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2118,
                        "name": "RevocationRequestData",
                        "nameLocations": [
                          "3387:21:2"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2093,
                        "src": "3387:21:2"
                      },
                      "referencedDeclaration": 2093,
                      "src": "3387:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                        "typeString": "struct RevocationRequestData"
                      }
                    },
                    "id": 2120,
                    "nodeType": "ArrayTypeName",
                    "src": "3387:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                      "typeString": "struct RevocationRequestData[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "MultiRevocationRequest",
              "nameLocation": "3298:22:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "3291:171:2",
              "visibility": "public"
            },
            {
              "canonicalName": "MultiDelegatedRevocationRequest",
              "documentation": {
                "id": 2123,
                "nodeType": "StructuredDocumentation",
                "src": "3464:96:2",
                "text": "@notice A struct representing the full arguments of the delegated multi revocation request."
              },
              "id": 2138,
              "members": [
                {
                  "constant": false,
                  "id": 2125,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "3613:6:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2138,
                  "src": "3605:14:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2124,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3605:7:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2129,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "3689:4:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2138,
                  "src": "3665:28:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                    "typeString": "struct RevocationRequestData[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2127,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2126,
                        "name": "RevocationRequestData",
                        "nameLocations": [
                          "3665:21:2"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2093,
                        "src": "3665:21:2"
                      },
                      "referencedDeclaration": 2093,
                      "src": "3665:21:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                        "typeString": "struct RevocationRequestData"
                      }
                    },
                    "id": 2128,
                    "nodeType": "ArrayTypeName",
                    "src": "3665:23:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_RevocationRequestData_$2093_storage_$dyn_storage_ptr",
                      "typeString": "struct RevocationRequestData[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2133,
                  "mutability": "mutable",
                  "name": "signatures",
                  "nameLocation": "3756:10:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2138,
                  "src": "3744:22:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_Signature_$27_storage_$dyn_storage_ptr",
                    "typeString": "struct Signature[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2131,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2130,
                        "name": "Signature",
                        "nameLocations": [
                          "3744:9:2"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 27,
                        "src": "3744:9:2"
                      },
                      "referencedDeclaration": 27,
                      "src": "3744:9:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Signature_$27_storage_ptr",
                        "typeString": "struct Signature"
                      }
                    },
                    "id": 2132,
                    "nodeType": "ArrayTypeName",
                    "src": "3744:11:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Signature_$27_storage_$dyn_storage_ptr",
                      "typeString": "struct Signature[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2135,
                  "mutability": "mutable",
                  "name": "revoker",
                  "nameLocation": "3891:7:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2138,
                  "src": "3883:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2134,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3883:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2137,
                  "mutability": "mutable",
                  "name": "deadline",
                  "nameLocation": "3936:8:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 2138,
                  "src": "3929:15:2",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 2136,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "3929:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "MultiDelegatedRevocationRequest",
              "nameLocation": "3567:31:2",
              "nodeType": "StructDefinition",
              "scope": 2327,
              "src": "3560:429:2",
              "visibility": "public"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2140,
                    "name": "ISemver",
                    "nameLocations": [
                      "4083:7:2"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2389,
                    "src": "4083:7:2"
                  },
                  "id": 2141,
                  "nodeType": "InheritanceSpecifier",
                  "src": "4083:7:2"
                }
              ],
              "canonicalName": "IEAS",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2139,
                "nodeType": "StructuredDocumentation",
                "src": "3991:74:2",
                "text": "@title IEAS\n @notice EAS - Ethereum Attestation Service interface."
              },
              "fullyImplemented": false,
              "id": 2326,
              "linearizedBaseContracts": [
                2326,
                2389
              ],
              "name": "IEAS",
              "nameLocation": "4075:4:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2142,
                    "nodeType": "StructuredDocumentation",
                    "src": "4097:259:2",
                    "text": "@notice Emitted when an attestation has been made.\n @param recipient The recipient of the attestation.\n @param attester The attesting account.\n @param uid The UID of the new attestation.\n @param schemaUID The UID of the schema."
                  },
                  "eventSelector": "8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b35",
                  "id": 2152,
                  "name": "Attested",
                  "nameLocation": "4367:8:2",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2151,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2144,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4392:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2152,
                        "src": "4376:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2143,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4376:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2146,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "attester",
                        "nameLocation": "4419:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2152,
                        "src": "4403:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2145,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4403:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2148,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "4437:3:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2152,
                        "src": "4429:11:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2147,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4429:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2150,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "schemaUID",
                        "nameLocation": "4458:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2152,
                        "src": "4442:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2149,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4442:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4375:93:2"
                  },
                  "src": "4361:108:2"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2153,
                    "nodeType": "StructuredDocumentation",
                    "src": "4475:263:2",
                    "text": "@notice Emitted when an attestation has been revoked.\n @param recipient The recipient of the attestation.\n @param attester The attesting account.\n @param schemaUID The UID of the schema.\n @param uid The UID the revoked attestation."
                  },
                  "eventSelector": "f930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f615",
                  "id": 2163,
                  "name": "Revoked",
                  "nameLocation": "4749:7:2",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2155,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4773:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2163,
                        "src": "4757:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2154,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4757:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2157,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "attester",
                        "nameLocation": "4800:8:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2163,
                        "src": "4784:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4784:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2159,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "4818:3:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2163,
                        "src": "4810:11:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2158,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4810:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2161,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "schemaUID",
                        "nameLocation": "4839:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2163,
                        "src": "4823:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2160,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4823:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4756:93:2"
                  },
                  "src": "4743:107:2"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2164,
                    "nodeType": "StructuredDocumentation",
                    "src": "4856:123:2",
                    "text": "@notice Emitted when a data has been timestamped.\n @param data The data.\n @param timestamp The timestamp."
                  },
                  "eventSelector": "5aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459f",
                  "id": 2170,
                  "name": "Timestamped",
                  "nameLocation": "4990:11:2",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2169,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2166,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5018:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2170,
                        "src": "5002:20:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2165,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5002:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2168,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "5039:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2170,
                        "src": "5024:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2167,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "5024:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5001:48:2"
                  },
                  "src": "4984:66:2"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2171,
                    "nodeType": "StructuredDocumentation",
                    "src": "5056:170:2",
                    "text": "@notice Emitted when a data has been revoked.\n @param revoker The address of the revoker.\n @param data The data.\n @param timestamp The timestamp."
                  },
                  "eventSelector": "92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a2229",
                  "id": 2179,
                  "name": "RevokedOffchain",
                  "nameLocation": "5237:15:2",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2173,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "revoker",
                        "nameLocation": "5269:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2179,
                        "src": "5253:23:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2172,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5253:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2175,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5294:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2179,
                        "src": "5278:20:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2174,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5278:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2177,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "timestamp",
                        "nameLocation": "5315:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2179,
                        "src": "5300:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2176,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "5300:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5252:73:2"
                  },
                  "src": "5231:95:2"
                },
                {
                  "documentation": {
                    "id": 2180,
                    "nodeType": "StructuredDocumentation",
                    "src": "5332:121:2",
                    "text": "@notice Returns the address of the global schema registry.\n @return The address of the global schema registry."
                  },
                  "functionSelector": "f10b5cc8",
                  "id": 2186,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSchemaRegistry",
                  "nameLocation": "5467:17:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2181,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5484:2:2"
                  },
                  "returnParameters": {
                    "id": 2185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2184,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2186,
                        "src": "5510:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                          "typeString": "contract ISchemaRegistry"
                        },
                        "typeName": {
                          "id": 2183,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2182,
                            "name": "ISchemaRegistry",
                            "nameLocations": [
                              "5510:15:2"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2379,
                            "src": "5510:15:2"
                          },
                          "referencedDeclaration": 2379,
                          "src": "5510:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                            "typeString": "contract ISchemaRegistry"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5509:17:2"
                  },
                  "scope": 2326,
                  "src": "5458:69:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2187,
                    "nodeType": "StructuredDocumentation",
                    "src": "5533:665:2",
                    "text": "@notice Attests to a specific schema.\n @param request The arguments of the attestation request.\n @return The UID of the new attestation.\n Example:\n     attest({\n         schema: \"0facc36681cbe2456019c1b0d1e7bedd6d1d40f6f324bf3dd3a4cef2999200a0\",\n         data: {\n             recipient: \"0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf\",\n             expirationTime: 0,\n             revocable: true,\n             refUID: \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n             data: \"0xF00D\",\n             value: 0\n         }\n     })"
                  },
                  "functionSelector": "f17325e7",
                  "id": 2195,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "attest",
                  "nameLocation": "6212:6:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2190,
                        "mutability": "mutable",
                        "name": "request",
                        "nameLocation": "6247:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2195,
                        "src": "6219:35:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AttestationRequest_$2049_calldata_ptr",
                          "typeString": "struct AttestationRequest"
                        },
                        "typeName": {
                          "id": 2189,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2188,
                            "name": "AttestationRequest",
                            "nameLocations": [
                              "6219:18:2"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2049,
                            "src": "6219:18:2"
                          },
                          "referencedDeclaration": 2049,
                          "src": "6219:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AttestationRequest_$2049_storage_ptr",
                            "typeString": "struct AttestationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6218:37:2"
                  },
                  "returnParameters": {
                    "id": 2194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2193,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2195,
                        "src": "6282:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2192,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6282:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6281:9:2"
                  },
                  "scope": 2326,
                  "src": "6203:88:2",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2196,
                    "nodeType": "StructuredDocumentation",
                    "src": "6297:1004:2",
                    "text": "@notice Attests to a specific schema via the provided ECDSA signature.\n @param delegatedRequest The arguments of the delegated attestation request.\n @return The UID of the new attestation.\n Example:\n     attestByDelegation({\n         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n         data: {\n             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',\n             expirationTime: 1673891048,\n             revocable: true,\n             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',\n             data: '0x1234',\n             value: 0\n         },\n         signature: {\n             v: 28,\n             r: '0x148c...b25b',\n             s: '0x5a72...be22'\n         },\n         attester: '0xc5E8740aD971409492b1A63Db8d83025e0Fc427e',\n         deadline: 1673891048\n     })"
                  },
                  "functionSelector": "3c042715",
                  "id": 2204,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "attestByDelegation",
                  "nameLocation": "7315:18:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2200,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2199,
                        "mutability": "mutable",
                        "name": "delegatedRequest",
                        "nameLocation": "7380:16:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2204,
                        "src": "7343:53:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_calldata_ptr",
                          "typeString": "struct DelegatedAttestationRequest"
                        },
                        "typeName": {
                          "id": 2198,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2197,
                            "name": "DelegatedAttestationRequest",
                            "nameLocations": [
                              "7343:27:2"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2063,
                            "src": "7343:27:2"
                          },
                          "referencedDeclaration": 2063,
                          "src": "7343:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_storage_ptr",
                            "typeString": "struct DelegatedAttestationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7333:69:2"
                  },
                  "returnParameters": {
                    "id": 2203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2202,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2204,
                        "src": "7429:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2201,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7429:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7428:9:2"
                  },
                  "scope": 2326,
                  "src": "7306:132:2",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2205,
                    "nodeType": "StructuredDocumentation",
                    "src": "7444:1656:2",
                    "text": "@notice Attests to multiple schemas.\n @param multiRequests The arguments of the multi attestation requests. The requests should be grouped by distinct\n     schema ids to benefit from the best batching optimization.\n @return The UIDs of the new attestations.\n Example:\n     multiAttest([{\n         schema: '0x33e9094830a5cba5554d1954310e4fbed2ef5f859ec1404619adea4207f391fd',\n         data: [{\n             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',\n             expirationTime: 1673891048,\n             revocable: true,\n             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',\n             data: '0x1234',\n             value: 1000\n         },\n         {\n             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',\n             expirationTime: 0,\n             revocable: false,\n             refUID: '0x480df4a039efc31b11bfdf491b383ca138b6bde160988222a2a3509c02cee174',\n             data: '0x00',\n             value: 0\n         }],\n     },\n     {\n         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',\n         data: [{\n             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',\n             expirationTime: 0,\n             revocable: true,\n             refUID: '0x75bf2ed8dca25a8190c50c52db136664de25b2449535839008ccfdab469b214f',\n             data: '0x12345678',\n             value: 0\n         },\n     }])"
                  },
                  "functionSelector": "44adc90e",
                  "id": 2215,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiAttest",
                  "nameLocation": "9114:11:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2210,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2209,
                        "mutability": "mutable",
                        "name": "multiRequests",
                        "nameLocation": "9161:13:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "9126:48:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MultiAttestationRequest_$2071_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct MultiAttestationRequest[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2207,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2206,
                              "name": "MultiAttestationRequest",
                              "nameLocations": [
                                "9126:23:2"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2071,
                              "src": "9126:23:2"
                            },
                            "referencedDeclaration": 2071,
                            "src": "9126:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MultiAttestationRequest_$2071_storage_ptr",
                              "typeString": "struct MultiAttestationRequest"
                            }
                          },
                          "id": 2208,
                          "nodeType": "ArrayTypeName",
                          "src": "9126:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_MultiAttestationRequest_$2071_storage_$dyn_storage_ptr",
                            "typeString": "struct MultiAttestationRequest[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9125:50:2"
                  },
                  "returnParameters": {
                    "id": 2214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2213,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "9202:16:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2211,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "9202:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 2212,
                          "nodeType": "ArrayTypeName",
                          "src": "9202:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9201:18:2"
                  },
                  "scope": 2326,
                  "src": "9105:115:2",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2216,
                    "nodeType": "StructuredDocumentation",
                    "src": "9226:1642:2",
                    "text": "@notice Attests to multiple schemas using via provided ECDSA signatures.\n @param multiDelegatedRequests The arguments of the delegated multi attestation requests. The requests should be\n     grouped by distinct schema ids to benefit from the best batching optimization.\n @return The UIDs of the new attestations.\n Example:\n     multiAttestByDelegation([{\n         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n         data: [{\n             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',\n             expirationTime: 1673891048,\n             revocable: true,\n             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',\n             data: '0x1234',\n             value: 0\n         },\n         {\n             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',\n             expirationTime: 0,\n             revocable: false,\n             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',\n             data: '0x00',\n             value: 0\n         }],\n         signatures: [{\n             v: 28,\n             r: '0x148c...b25b',\n             s: '0x5a72...be22'\n         },\n         {\n             v: 28,\n             r: '0x487s...67bb',\n             s: '0x12ad...2366'\n         }],\n         attester: '0x1D86495b2A7B524D747d2839b3C645Bed32e8CF4',\n         deadline: 1673891048\n     }])"
                  },
                  "functionSelector": "95411525",
                  "id": 2226,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiAttestByDelegation",
                  "nameLocation": "10882:23:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2220,
                        "mutability": "mutable",
                        "name": "multiDelegatedRequests",
                        "nameLocation": "10959:22:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2226,
                        "src": "10915:66:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MultiDelegatedAttestationRequest_$2087_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct MultiDelegatedAttestationRequest[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2218,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2217,
                              "name": "MultiDelegatedAttestationRequest",
                              "nameLocations": [
                                "10915:32:2"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2087,
                              "src": "10915:32:2"
                            },
                            "referencedDeclaration": 2087,
                            "src": "10915:32:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MultiDelegatedAttestationRequest_$2087_storage_ptr",
                              "typeString": "struct MultiDelegatedAttestationRequest"
                            }
                          },
                          "id": 2219,
                          "nodeType": "ArrayTypeName",
                          "src": "10915:34:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_MultiDelegatedAttestationRequest_$2087_storage_$dyn_storage_ptr",
                            "typeString": "struct MultiDelegatedAttestationRequest[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10905:82:2"
                  },
                  "returnParameters": {
                    "id": 2225,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2224,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2226,
                        "src": "11014:16:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2222,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "11014:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 2223,
                          "nodeType": "ArrayTypeName",
                          "src": "11014:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11013:18:2"
                  },
                  "scope": 2326,
                  "src": "10873:159:2",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2227,
                    "nodeType": "StructuredDocumentation",
                    "src": "11038:450:2",
                    "text": "@notice Revokes an existing attestation to a specific schema.\n @param request The arguments of the revocation request.\n Example:\n     revoke({\n         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n         data: {\n             uid: '0x101032e487642ee04ee17049f99a70590c735b8614079fc9275f9dd57c00966d',\n             value: 0\n         }\n     })"
                  },
                  "functionSelector": "46926267",
                  "id": 2233,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revoke",
                  "nameLocation": "11502:6:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2230,
                        "mutability": "mutable",
                        "name": "request",
                        "nameLocation": "11536:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2233,
                        "src": "11509:34:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RevocationRequest_$2100_calldata_ptr",
                          "typeString": "struct RevocationRequest"
                        },
                        "typeName": {
                          "id": 2229,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2228,
                            "name": "RevocationRequest",
                            "nameLocations": [
                              "11509:17:2"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2100,
                            "src": "11509:17:2"
                          },
                          "referencedDeclaration": 2100,
                          "src": "11509:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RevocationRequest_$2100_storage_ptr",
                            "typeString": "struct RevocationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11508:36:2"
                  },
                  "returnParameters": {
                    "id": 2232,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11561:0:2"
                  },
                  "scope": 2326,
                  "src": "11493:69:2",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2234,
                    "nodeType": "StructuredDocumentation",
                    "src": "11568:777:2",
                    "text": "@notice Revokes an existing attestation to a specific schema via the provided ECDSA signature.\n @param delegatedRequest The arguments of the delegated revocation request.\n Example:\n     revokeByDelegation({\n         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n         data: {\n             uid: '0xcbbc12102578c642a0f7b34fe7111e41afa25683b6cd7b5a14caf90fa14d24ba',\n             value: 0\n         },\n         signature: {\n             v: 27,\n             r: '0xb593...7142',\n             s: '0x0f5b...2cce'\n         },\n         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',\n         deadline: 1673891048\n     })"
                  },
                  "functionSelector": "a6d4dbc7",
                  "id": 2240,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revokeByDelegation",
                  "nameLocation": "12359:18:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2237,
                        "mutability": "mutable",
                        "name": "delegatedRequest",
                        "nameLocation": "12414:16:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2240,
                        "src": "12378:52:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_calldata_ptr",
                          "typeString": "struct DelegatedRevocationRequest"
                        },
                        "typeName": {
                          "id": 2236,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2235,
                            "name": "DelegatedRevocationRequest",
                            "nameLocations": [
                              "12378:26:2"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2114,
                            "src": "12378:26:2"
                          },
                          "referencedDeclaration": 2114,
                          "src": "12378:26:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_storage_ptr",
                            "typeString": "struct DelegatedRevocationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12377:54:2"
                  },
                  "returnParameters": {
                    "id": 2239,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12448:0:2"
                  },
                  "scope": 2326,
                  "src": "12350:99:2",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2241,
                    "nodeType": "StructuredDocumentation",
                    "src": "12455:1039:2",
                    "text": "@notice Revokes existing attestations to multiple schemas.\n @param multiRequests The arguments of the multi revocation requests. The requests should be grouped by distinct\n     schema ids to benefit from the best batching optimization.\n Example:\n     multiRevoke([{\n         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n         data: [{\n             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',\n             value: 1000\n         },\n         {\n             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',\n             value: 0\n         }],\n     },\n     {\n         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',\n         data: [{\n             uid: '0x053d42abce1fd7c8fcddfae21845ad34dae287b2c326220b03ba241bc5a8f019',\n             value: 0\n         },\n     }])"
                  },
                  "functionSelector": "4cb7e9e5",
                  "id": 2248,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiRevoke",
                  "nameLocation": "13508:11:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2246,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2245,
                        "mutability": "mutable",
                        "name": "multiRequests",
                        "nameLocation": "13554:13:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2248,
                        "src": "13520:47:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MultiRevocationRequest_$2122_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct MultiRevocationRequest[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2243,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2242,
                              "name": "MultiRevocationRequest",
                              "nameLocations": [
                                "13520:22:2"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2122,
                              "src": "13520:22:2"
                            },
                            "referencedDeclaration": 2122,
                            "src": "13520:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MultiRevocationRequest_$2122_storage_ptr",
                              "typeString": "struct MultiRevocationRequest"
                            }
                          },
                          "id": 2244,
                          "nodeType": "ArrayTypeName",
                          "src": "13520:24:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_MultiRevocationRequest_$2122_storage_$dyn_storage_ptr",
                            "typeString": "struct MultiRevocationRequest[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13519:49:2"
                  },
                  "returnParameters": {
                    "id": 2247,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13585:0:2"
                  },
                  "scope": 2326,
                  "src": "13499:87:2",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2249,
                    "nodeType": "StructuredDocumentation",
                    "src": "13592:1229:2",
                    "text": "@notice Revokes existing attestations to multiple schemas via provided ECDSA signatures.\n @param multiDelegatedRequests The arguments of the delegated multi revocation attestation requests. The requests\n     should be grouped by distinct schema ids to benefit from the best batching optimization.\n Example:\n     multiRevokeByDelegation([{\n         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',\n         data: [{\n             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',\n             value: 1000\n         },\n         {\n             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',\n             value: 0\n         }],\n         signatures: [{\n             v: 28,\n             r: '0x148c...b25b',\n             s: '0x5a72...be22'\n         },\n         {\n             v: 28,\n             r: '0x487s...67bb',\n             s: '0x12ad...2366'\n         }],\n         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',\n         deadline: 1673891048\n     }])"
                  },
                  "functionSelector": "0eabf660",
                  "id": 2256,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiRevokeByDelegation",
                  "nameLocation": "14835:23:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2253,
                        "mutability": "mutable",
                        "name": "multiDelegatedRequests",
                        "nameLocation": "14911:22:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2256,
                        "src": "14868:65:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_MultiDelegatedRevocationRequest_$2138_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct MultiDelegatedRevocationRequest[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2251,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2250,
                              "name": "MultiDelegatedRevocationRequest",
                              "nameLocations": [
                                "14868:31:2"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2138,
                              "src": "14868:31:2"
                            },
                            "referencedDeclaration": 2138,
                            "src": "14868:31:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MultiDelegatedRevocationRequest_$2138_storage_ptr",
                              "typeString": "struct MultiDelegatedRevocationRequest"
                            }
                          },
                          "id": 2252,
                          "nodeType": "ArrayTypeName",
                          "src": "14868:33:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_MultiDelegatedRevocationRequest_$2138_storage_$dyn_storage_ptr",
                            "typeString": "struct MultiDelegatedRevocationRequest[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14858:81:2"
                  },
                  "returnParameters": {
                    "id": 2255,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14956:0:2"
                  },
                  "scope": 2326,
                  "src": "14826:131:2",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2257,
                    "nodeType": "StructuredDocumentation",
                    "src": "14963:154:2",
                    "text": "@notice Timestamps the specified bytes32 data.\n @param data The data to timestamp.\n @return The timestamp the data was timestamped with."
                  },
                  "functionSelector": "4d003070",
                  "id": 2264,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "timestamp",
                  "nameLocation": "15131:9:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2259,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15149:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "15141:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2258,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15141:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15140:14:2"
                  },
                  "returnParameters": {
                    "id": 2263,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2262,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "15173:6:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2261,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "15173:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15172:8:2"
                  },
                  "scope": 2326,
                  "src": "15122:59:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2265,
                    "nodeType": "StructuredDocumentation",
                    "src": "15187:163:2",
                    "text": "@notice Timestamps the specified multiple bytes32 data.\n @param data The data to timestamp.\n @return The timestamp the data was timestamped with."
                  },
                  "functionSelector": "e71ff365",
                  "id": 2273,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiTimestamp",
                  "nameLocation": "15364:14:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2268,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15398:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2273,
                        "src": "15379:23:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2266,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "15379:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 2267,
                          "nodeType": "ArrayTypeName",
                          "src": "15379:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15378:25:2"
                  },
                  "returnParameters": {
                    "id": 2272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2271,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2273,
                        "src": "15422:6:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2270,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "15422:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15421:8:2"
                  },
                  "scope": 2326,
                  "src": "15355:75:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2274,
                    "nodeType": "StructuredDocumentation",
                    "src": "15436:147:2",
                    "text": "@notice Revokes the specified bytes32 data.\n @param data The data to timestamp.\n @return The timestamp the data was revoked with."
                  },
                  "functionSelector": "cf190f34",
                  "id": 2281,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revokeOffchain",
                  "nameLocation": "15597:14:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2276,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15620:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2281,
                        "src": "15612:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2275,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15612:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15611:14:2"
                  },
                  "returnParameters": {
                    "id": 2280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2279,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2281,
                        "src": "15644:6:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2278,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "15644:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15643:8:2"
                  },
                  "scope": 2326,
                  "src": "15588:64:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2282,
                    "nodeType": "StructuredDocumentation",
                    "src": "15658:156:2",
                    "text": "@notice Revokes the specified multiple bytes32 data.\n @param data The data to timestamp.\n @return The timestamp the data was revoked with."
                  },
                  "functionSelector": "13893f61",
                  "id": 2290,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiRevokeOffchain",
                  "nameLocation": "15828:19:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2285,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15867:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2290,
                        "src": "15848:23:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2283,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "15848:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 2284,
                          "nodeType": "ArrayTypeName",
                          "src": "15848:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15847:25:2"
                  },
                  "returnParameters": {
                    "id": 2289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2288,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2290,
                        "src": "15891:6:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2287,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "15891:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15890:8:2"
                  },
                  "scope": 2326,
                  "src": "15819:80:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2291,
                    "nodeType": "StructuredDocumentation",
                    "src": "15905:156:2",
                    "text": "@notice Returns an existing attestation by UID.\n @param uid The UID of the attestation to retrieve.\n @return The attestation data members."
                  },
                  "functionSelector": "a3112a64",
                  "id": 2299,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAttestation",
                  "nameLocation": "16075:14:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2293,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "16098:3:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2299,
                        "src": "16090:11:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2292,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16090:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16089:13:2"
                  },
                  "returnParameters": {
                    "id": 2298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2297,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2299,
                        "src": "16126:18:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Attestation_$49_memory_ptr",
                          "typeString": "struct Attestation"
                        },
                        "typeName": {
                          "id": 2296,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2295,
                            "name": "Attestation",
                            "nameLocations": [
                              "16126:11:2"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 49,
                            "src": "16126:11:2"
                          },
                          "referencedDeclaration": 49,
                          "src": "16126:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                            "typeString": "struct Attestation"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16125:20:2"
                  },
                  "scope": 2326,
                  "src": "16066:80:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2300,
                    "nodeType": "StructuredDocumentation",
                    "src": "16152:155:2",
                    "text": "@notice Checks whether an attestation exists.\n @param uid The UID of the attestation to retrieve.\n @return Whether an attestation exists."
                  },
                  "functionSelector": "e30bb563",
                  "id": 2307,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isAttestationValid",
                  "nameLocation": "16321:18:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2302,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "16348:3:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2307,
                        "src": "16340:11:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2301,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16340:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16339:13:2"
                  },
                  "returnParameters": {
                    "id": 2306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2305,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2307,
                        "src": "16376:4:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2304,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16376:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16375:6:2"
                  },
                  "scope": 2326,
                  "src": "16312:70:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2308,
                    "nodeType": "StructuredDocumentation",
                    "src": "16388:179:2",
                    "text": "@notice Returns the timestamp that the specified data was timestamped with.\n @param data The data to query.\n @return The timestamp the data was timestamped with."
                  },
                  "functionSelector": "d45c4435",
                  "id": 2315,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTimestamp",
                  "nameLocation": "16581:12:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2310,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "16602:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2315,
                        "src": "16594:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2309,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16594:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16593:14:2"
                  },
                  "returnParameters": {
                    "id": 2314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2313,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2315,
                        "src": "16631:6:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2312,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "16631:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16630:8:2"
                  },
                  "scope": 2326,
                  "src": "16572:67:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2316,
                    "nodeType": "StructuredDocumentation",
                    "src": "16645:179:2",
                    "text": "@notice Returns the timestamp that the specified data was timestamped with.\n @param data The data to query.\n @return The timestamp the data was timestamped with."
                  },
                  "functionSelector": "b469318d",
                  "id": 2325,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevokeOffchain",
                  "nameLocation": "16838:17:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2318,
                        "mutability": "mutable",
                        "name": "revoker",
                        "nameLocation": "16864:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2325,
                        "src": "16856:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2317,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16856:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2320,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "16881:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 2325,
                        "src": "16873:12:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2319,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16873:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16855:31:2"
                  },
                  "returnParameters": {
                    "id": 2324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2323,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2325,
                        "src": "16910:6:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2322,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "16910:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16909:8:2"
                  },
                  "scope": 2326,
                  "src": "16829:89:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2327,
              "src": "4065:12855:2",
              "usedErrors": [],
              "usedEvents": [
                2152,
                2163,
                2170,
                2179
              ]
            }
          ],
          "src": "33:16888:2"
        },
        "id": 2
      },
      "@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol",
          "exportedSymbols": {
            "ISchemaRegistry": [
              2379
            ],
            "ISchemaResolver": [
              2982
            ],
            "ISemver": [
              2389
            ],
            "SchemaRecord": [
              2343
            ]
          },
          "id": 2380,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2328,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:3"
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol",
              "file": "./ISemver.sol",
              "id": 2330,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2380,
              "sourceUnit": 2390,
              "src": "58:40:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2329,
                    "name": "ISemver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2389,
                    "src": "67:7:3",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol",
              "file": "./resolver/ISchemaResolver.sol",
              "id": 2332,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2380,
              "sourceUnit": 2983,
              "src": "100:65:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2331,
                    "name": "ISchemaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2982,
                    "src": "109:15:3",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "canonicalName": "SchemaRecord",
              "documentation": {
                "id": 2333,
                "nodeType": "StructuredDocumentation",
                "src": "167:67:3",
                "text": "@notice A struct representing a record for a submitted schema."
              },
              "id": 2343,
              "members": [
                {
                  "constant": false,
                  "id": 2335,
                  "mutability": "mutable",
                  "name": "uid",
                  "nameLocation": "268:3:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "260:11:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2334,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "260:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2338,
                  "mutability": "mutable",
                  "name": "resolver",
                  "nameLocation": "333:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "317:24:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                    "typeString": "contract ISchemaResolver"
                  },
                  "typeName": {
                    "id": 2337,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 2336,
                      "name": "ISchemaResolver",
                      "nameLocations": [
                        "317:15:3"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2982,
                      "src": "317:15:3"
                    },
                    "referencedDeclaration": 2982,
                    "src": "317:15:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                      "typeString": "contract ISchemaResolver"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2340,
                  "mutability": "mutable",
                  "name": "revocable",
                  "nameLocation": "381:9:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "376:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2339,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "376:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2342,
                  "mutability": "mutable",
                  "name": "schema",
                  "nameLocation": "456:6:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 2343,
                  "src": "449:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2341,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "449:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "SchemaRecord",
              "nameLocation": "241:12:3",
              "nodeType": "StructDefinition",
              "scope": 2380,
              "src": "234:285:3",
              "visibility": "public"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2345,
                    "name": "ISemver",
                    "nameLocations": [
                      "680:7:3"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2389,
                    "src": "680:7:3"
                  },
                  "id": 2346,
                  "nodeType": "InheritanceSpecifier",
                  "src": "680:7:3"
                }
              ],
              "canonicalName": "ISchemaRegistry",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2344,
                "nodeType": "StructuredDocumentation",
                "src": "521:130:3",
                "text": "@title ISchemaRegistry\n @notice The interface of global attestation schemas for the Ethereum Attestation Service protocol."
              },
              "fullyImplemented": false,
              "id": 2379,
              "linearizedBaseContracts": [
                2379,
                2389
              ],
              "name": "ISchemaRegistry",
              "nameLocation": "661:15:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2347,
                    "nodeType": "StructuredDocumentation",
                    "src": "694:213:3",
                    "text": "@notice Emitted when a new schema has been registered\n @param uid The schema UID.\n @param registerer The address of the account used to register the schema.\n @param schema The schema data."
                  },
                  "eventSelector": "d0b86852e21f9e5fa4bc3b0cff9757ffe243d50c4b43968a42202153d651ea5e",
                  "id": 2356,
                  "name": "Registered",
                  "nameLocation": "918:10:3",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2349,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "945:3:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 2356,
                        "src": "929:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2348,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "929:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2351,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "registerer",
                        "nameLocation": "966:10:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 2356,
                        "src": "950:26:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2350,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "950:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2354,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "schema",
                        "nameLocation": "991:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 2356,
                        "src": "978:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                          "typeString": "struct SchemaRecord"
                        },
                        "typeName": {
                          "id": 2353,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2352,
                            "name": "SchemaRecord",
                            "nameLocations": [
                              "978:12:3"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2343,
                            "src": "978:12:3"
                          },
                          "referencedDeclaration": 2343,
                          "src": "978:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                            "typeString": "struct SchemaRecord"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "928:70:3"
                  },
                  "src": "912:87:3"
                },
                {
                  "documentation": {
                    "id": 2357,
                    "nodeType": "StructuredDocumentation",
                    "src": "1005:262:3",
                    "text": "@notice Submits and reserves a new schema\n @param schema The schema data schema.\n @param resolver An optional schema resolver.\n @param revocable Whether the schema allows revocations explicitly.\n @return The UID of the new schema."
                  },
                  "functionSelector": "60d7a278",
                  "id": 2369,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "register",
                  "nameLocation": "1281:8:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2365,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2359,
                        "mutability": "mutable",
                        "name": "schema",
                        "nameLocation": "1306:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 2369,
                        "src": "1290:22:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2358,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1290:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2362,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "1330:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 2369,
                        "src": "1314:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                          "typeString": "contract ISchemaResolver"
                        },
                        "typeName": {
                          "id": 2361,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2360,
                            "name": "ISchemaResolver",
                            "nameLocations": [
                              "1314:15:3"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2982,
                            "src": "1314:15:3"
                          },
                          "referencedDeclaration": 2982,
                          "src": "1314:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                            "typeString": "contract ISchemaResolver"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2364,
                        "mutability": "mutable",
                        "name": "revocable",
                        "nameLocation": "1345:9:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 2369,
                        "src": "1340:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2363,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1340:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1289:66:3"
                  },
                  "returnParameters": {
                    "id": 2368,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2367,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2369,
                        "src": "1374:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2366,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1374:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1373:9:3"
                  },
                  "scope": 2379,
                  "src": "1272:111:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2370,
                    "nodeType": "StructuredDocumentation",
                    "src": "1389:140:3",
                    "text": "@notice Returns an existing schema by UID\n @param uid The UID of the schema to retrieve.\n @return The schema data members."
                  },
                  "functionSelector": "a2ea7c6e",
                  "id": 2378,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSchema",
                  "nameLocation": "1543:9:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2372,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "1561:3:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 2378,
                        "src": "1553:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2371,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1553:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1552:13:3"
                  },
                  "returnParameters": {
                    "id": 2377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2376,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2378,
                        "src": "1589:19:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                          "typeString": "struct SchemaRecord"
                        },
                        "typeName": {
                          "id": 2375,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2374,
                            "name": "SchemaRecord",
                            "nameLocations": [
                              "1589:12:3"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2343,
                            "src": "1589:12:3"
                          },
                          "referencedDeclaration": 2343,
                          "src": "1589:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                            "typeString": "struct SchemaRecord"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1588:21:3"
                  },
                  "scope": 2379,
                  "src": "1534:76:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2380,
              "src": "651:961:3",
              "usedErrors": [],
              "usedEvents": [
                2356
              ]
            }
          ],
          "src": "33:1580:3"
        },
        "id": 3
      },
      "@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol",
          "exportedSymbols": {
            "ISemver": [
              2389
            ]
          },
          "id": 2390,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2381,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:4"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ISemver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2382,
                "nodeType": "StructuredDocumentation",
                "src": "58:51:4",
                "text": "@title ISemver\n @notice A semver interface."
              },
              "fullyImplemented": false,
              "id": 2389,
              "linearizedBaseContracts": [
                2389
              ],
              "name": "ISemver",
              "nameLocation": "119:7:4",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2383,
                    "nodeType": "StructuredDocumentation",
                    "src": "133:106:4",
                    "text": "@notice Returns the full semver contract version.\n @return Semver contract version as a string."
                  },
                  "functionSelector": "54fd4d50",
                  "id": 2388,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "version",
                  "nameLocation": "253:7:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2384,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "260:2:4"
                  },
                  "returnParameters": {
                    "id": 2387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2386,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2388,
                        "src": "286:13:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2385,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "286:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "285:15:4"
                  },
                  "scope": 2389,
                  "src": "244:57:4",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2390,
              "src": "109:194:4",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "33:271:4"
        },
        "id": 4
      },
      "@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol",
          "exportedSymbols": {
            "EMPTY_UID": [
              4
            ],
            "ISchemaRegistry": [
              2379
            ],
            "ISchemaResolver": [
              2982
            ],
            "SchemaRecord": [
              2343
            ],
            "SchemaRegistry": [
              2521
            ],
            "Semver": [
              2588
            ]
          },
          "id": 2522,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2391,
              "literals": [
                "solidity",
                "0.8",
                ".27"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:5"
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol",
              "file": "./resolver/ISchemaResolver.sol",
              "id": 2393,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2522,
              "sourceUnit": 2983,
              "src": "58:65:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2392,
                    "name": "ISchemaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2982,
                    "src": "67:15:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Common.sol",
              "file": "./Common.sol",
              "id": 2395,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2522,
              "sourceUnit": 66,
              "src": "125:41:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2394,
                    "name": "EMPTY_UID",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4,
                    "src": "134:9:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Semver.sol",
              "file": "./Semver.sol",
              "id": 2397,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2522,
              "sourceUnit": 2589,
              "src": "167:38:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2396,
                    "name": "Semver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2588,
                    "src": "176:6:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol",
              "file": "./ISchemaRegistry.sol",
              "id": 2400,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2522,
              "sourceUnit": 2380,
              "src": "206:70:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2398,
                    "name": "ISchemaRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2379,
                    "src": "215:15:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2399,
                    "name": "SchemaRecord",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2343,
                    "src": "232:12:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2402,
                    "name": "ISchemaRegistry",
                    "nameLocations": [
                      "371:15:5"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2379,
                    "src": "371:15:5"
                  },
                  "id": 2403,
                  "nodeType": "InheritanceSpecifier",
                  "src": "371:15:5"
                },
                {
                  "baseName": {
                    "id": 2404,
                    "name": "Semver",
                    "nameLocations": [
                      "388:6:5"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2588,
                    "src": "388:6:5"
                  },
                  "id": 2405,
                  "nodeType": "InheritanceSpecifier",
                  "src": "388:6:5"
                }
              ],
              "canonicalName": "SchemaRegistry",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2401,
                "nodeType": "StructuredDocumentation",
                "src": "278:66:5",
                "text": "@title SchemaRegistry\n @notice The global schema registry."
              },
              "fullyImplemented": true,
              "id": 2521,
              "linearizedBaseContracts": [
                2521,
                2588,
                2379,
                2389
              ],
              "name": "SchemaRegistry",
              "nameLocation": "353:14:5",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "errorSelector": "23369fa6",
                  "id": 2407,
                  "name": "AlreadyExists",
                  "nameLocation": "407:13:5",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2406,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "420:2:5"
                  },
                  "src": "401:22:5"
                },
                {
                  "constant": false,
                  "id": 2412,
                  "mutability": "mutable",
                  "name": "_registry",
                  "nameLocation": "551:9:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2521,
                  "src": "493:67:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_SchemaRecord_$2343_storage_$",
                    "typeString": "mapping(bytes32 => struct SchemaRecord)"
                  },
                  "typeName": {
                    "id": 2411,
                    "keyName": "uid",
                    "keyNameLocation": "509:3:5",
                    "keyType": {
                      "id": 2408,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "501:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "493:49:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_SchemaRecord_$2343_storage_$",
                      "typeString": "mapping(bytes32 => struct SchemaRecord)"
                    },
                    "valueName": "schemaRecord",
                    "valueNameLocation": "529:12:5",
                    "valueType": {
                      "id": 2410,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 2409,
                        "name": "SchemaRecord",
                        "nameLocations": [
                          "516:12:5"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2343,
                        "src": "516:12:5"
                      },
                      "referencedDeclaration": 2343,
                      "src": "516:12:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                        "typeString": "struct SchemaRecord"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2421,
                    "nodeType": "Block",
                    "src": "649:2:5",
                    "statements": []
                  },
                  "documentation": {
                    "id": 2413,
                    "nodeType": "StructuredDocumentation",
                    "src": "567:47:5",
                    "text": "@dev Creates a new SchemaRegistry instance."
                  },
                  "id": 2422,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "31",
                          "id": 2416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "640:1:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        {
                          "hexValue": "33",
                          "id": 2417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "643:1:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        {
                          "hexValue": "30",
                          "id": 2418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "646:1:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "id": 2419,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 2415,
                        "name": "Semver",
                        "nameLocations": [
                          "633:6:5"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2588,
                        "src": "633:6:5"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "633:15:5"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2414,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "630:2:5"
                  },
                  "returnParameters": {
                    "id": 2420,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "649:0:5"
                  },
                  "scope": 2521,
                  "src": "619:32:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2369
                  ],
                  "body": {
                    "id": 2483,
                    "nodeType": "Block",
                    "src": "804:487:5",
                    "statements": [
                      {
                        "assignments": [
                          2437
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2437,
                            "mutability": "mutable",
                            "name": "schemaRecord",
                            "nameLocation": "834:12:5",
                            "nodeType": "VariableDeclaration",
                            "scope": 2483,
                            "src": "814:32:5",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                              "typeString": "struct SchemaRecord"
                            },
                            "typeName": {
                              "id": 2436,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2435,
                                "name": "SchemaRecord",
                                "nameLocations": [
                                  "814:12:5"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2343,
                                "src": "814:12:5"
                              },
                              "referencedDeclaration": 2343,
                              "src": "814:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                                "typeString": "struct SchemaRecord"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2444,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2439,
                              "name": "EMPTY_UID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4,
                              "src": "881:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2440,
                              "name": "schema",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2425,
                              "src": "912:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              }
                            },
                            {
                              "id": 2441,
                              "name": "resolver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2428,
                              "src": "942:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                "typeString": "contract ISchemaResolver"
                              }
                            },
                            {
                              "id": 2442,
                              "name": "revocable",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2430,
                              "src": "975:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_string_calldata_ptr",
                                "typeString": "string calldata"
                              },
                              {
                                "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                "typeString": "contract ISchemaResolver"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2438,
                            "name": "SchemaRecord",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2343,
                            "src": "849:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_SchemaRecord_$2343_storage_ptr_$",
                              "typeString": "type(struct SchemaRecord storage pointer)"
                            }
                          },
                          "id": 2443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "876:3:5",
                            "904:6:5",
                            "932:8:5",
                            "964:9:5"
                          ],
                          "names": [
                            "uid",
                            "schema",
                            "resolver",
                            "revocable"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "849:146:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                            "typeString": "struct SchemaRecord memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "814:181:5"
                      },
                      {
                        "assignments": [
                          2446
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2446,
                            "mutability": "mutable",
                            "name": "uid",
                            "nameLocation": "1014:3:5",
                            "nodeType": "VariableDeclaration",
                            "scope": 2483,
                            "src": "1006:11:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2445,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1006:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2450,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 2448,
                              "name": "schemaRecord",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2437,
                              "src": "1028:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              }
                            ],
                            "id": 2447,
                            "name": "_getUID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2520,
                            "src": "1020:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_SchemaRecord_$2343_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (struct SchemaRecord memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2449,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1020:21:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1006:35:5"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 2456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 2451,
                                "name": "_registry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2412,
                                "src": "1055:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_SchemaRecord_$2343_storage_$",
                                  "typeString": "mapping(bytes32 => struct SchemaRecord storage ref)"
                                }
                              },
                              "id": 2453,
                              "indexExpression": {
                                "id": 2452,
                                "name": "uid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2446,
                                "src": "1065:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1055:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage",
                                "typeString": "struct SchemaRecord storage ref"
                              }
                            },
                            "id": 2454,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1070:3:5",
                            "memberName": "uid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2335,
                            "src": "1055:18:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2455,
                            "name": "EMPTY_UID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4,
                            "src": "1077:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1055:31:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2461,
                        "nodeType": "IfStatement",
                        "src": "1051:84:5",
                        "trueBody": {
                          "id": 2460,
                          "nodeType": "Block",
                          "src": "1088:47:5",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2457,
                                  "name": "AlreadyExists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2407,
                                  "src": "1109:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 2458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1109:15:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 2459,
                              "nodeType": "RevertStatement",
                              "src": "1102:22:5"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 2466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 2462,
                              "name": "schemaRecord",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2437,
                              "src": "1145:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              }
                            },
                            "id": 2464,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberLocation": "1158:3:5",
                            "memberName": "uid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2335,
                            "src": "1145:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2465,
                            "name": "uid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2446,
                            "src": "1164:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1145:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2467,
                        "nodeType": "ExpressionStatement",
                        "src": "1145:22:5"
                      },
                      {
                        "expression": {
                          "id": 2472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2468,
                              "name": "_registry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2412,
                              "src": "1177:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_SchemaRecord_$2343_storage_$",
                                "typeString": "mapping(bytes32 => struct SchemaRecord storage ref)"
                              }
                            },
                            "id": 2470,
                            "indexExpression": {
                              "id": 2469,
                              "name": "uid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2446,
                              "src": "1187:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1177:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage",
                              "typeString": "struct SchemaRecord storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2471,
                            "name": "schemaRecord",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "1194:12:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                              "typeString": "struct SchemaRecord memory"
                            }
                          },
                          "src": "1177:29:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage",
                            "typeString": "struct SchemaRecord storage ref"
                          }
                        },
                        "id": 2473,
                        "nodeType": "ExpressionStatement",
                        "src": "1177:29:5"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2475,
                              "name": "uid",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2446,
                              "src": "1233:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 2476,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1238:3:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1242:6:5",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1238:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2478,
                              "name": "schemaRecord",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2437,
                              "src": "1250:12:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                "typeString": "struct SchemaRecord memory"
                              }
                            ],
                            "id": 2474,
                            "name": "Registered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2356,
                            "src": "1222:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_struct$_SchemaRecord_$2343_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,struct SchemaRecord memory)"
                            }
                          },
                          "id": 2479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1222:41:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2480,
                        "nodeType": "EmitStatement",
                        "src": "1217:46:5"
                      },
                      {
                        "expression": {
                          "id": 2481,
                          "name": "uid",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2446,
                          "src": "1281:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2434,
                        "id": 2482,
                        "nodeType": "Return",
                        "src": "1274:10:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2423,
                    "nodeType": "StructuredDocumentation",
                    "src": "657:31:5",
                    "text": "@inheritdoc ISchemaRegistry"
                  },
                  "functionSelector": "60d7a278",
                  "id": 2484,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "register",
                  "nameLocation": "702:8:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2425,
                        "mutability": "mutable",
                        "name": "schema",
                        "nameLocation": "727:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2484,
                        "src": "711:22:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2424,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "711:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2428,
                        "mutability": "mutable",
                        "name": "resolver",
                        "nameLocation": "751:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2484,
                        "src": "735:24:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                          "typeString": "contract ISchemaResolver"
                        },
                        "typeName": {
                          "id": 2427,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2426,
                            "name": "ISchemaResolver",
                            "nameLocations": [
                              "735:15:5"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2982,
                            "src": "735:15:5"
                          },
                          "referencedDeclaration": 2982,
                          "src": "735:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                            "typeString": "contract ISchemaResolver"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2430,
                        "mutability": "mutable",
                        "name": "revocable",
                        "nameLocation": "766:9:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2484,
                        "src": "761:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2429,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "710:66:5"
                  },
                  "returnParameters": {
                    "id": 2434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2433,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2484,
                        "src": "795:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2432,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "795:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "794:9:5"
                  },
                  "scope": 2521,
                  "src": "693:598:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2378
                  ],
                  "body": {
                    "id": 2497,
                    "nodeType": "Block",
                    "src": "1409:38:5",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 2493,
                            "name": "_registry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2412,
                            "src": "1426:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_SchemaRecord_$2343_storage_$",
                              "typeString": "mapping(bytes32 => struct SchemaRecord storage ref)"
                            }
                          },
                          "id": 2495,
                          "indexExpression": {
                            "id": 2494,
                            "name": "uid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2487,
                            "src": "1436:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1426:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage",
                            "typeString": "struct SchemaRecord storage ref"
                          }
                        },
                        "functionReturnParameters": 2492,
                        "id": 2496,
                        "nodeType": "Return",
                        "src": "1419:21:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2485,
                    "nodeType": "StructuredDocumentation",
                    "src": "1297:31:5",
                    "text": "@inheritdoc ISchemaRegistry"
                  },
                  "functionSelector": "a2ea7c6e",
                  "id": 2498,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSchema",
                  "nameLocation": "1342:9:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2487,
                        "mutability": "mutable",
                        "name": "uid",
                        "nameLocation": "1360:3:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2498,
                        "src": "1352:11:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2486,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1352:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1351:13:5"
                  },
                  "returnParameters": {
                    "id": 2492,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2491,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2498,
                        "src": "1388:19:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                          "typeString": "struct SchemaRecord"
                        },
                        "typeName": {
                          "id": 2490,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2489,
                            "name": "SchemaRecord",
                            "nameLocations": [
                              "1388:12:5"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2343,
                            "src": "1388:12:5"
                          },
                          "referencedDeclaration": 2343,
                          "src": "1388:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                            "typeString": "struct SchemaRecord"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1387:21:5"
                  },
                  "scope": 2521,
                  "src": "1333:114:5",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2519,
                    "nodeType": "Block",
                    "src": "1659:119:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 2510,
                                    "name": "schemaRecord",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2502,
                                    "src": "1703:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                      "typeString": "struct SchemaRecord memory"
                                    }
                                  },
                                  "id": 2511,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1716:6:5",
                                  "memberName": "schema",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2342,
                                  "src": "1703:19:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 2512,
                                    "name": "schemaRecord",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2502,
                                    "src": "1724:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                      "typeString": "struct SchemaRecord memory"
                                    }
                                  },
                                  "id": 2513,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1737:8:5",
                                  "memberName": "resolver",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2338,
                                  "src": "1724:21:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                    "typeString": "contract ISchemaResolver"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 2514,
                                    "name": "schemaRecord",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2502,
                                    "src": "1747:12:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                                      "typeString": "struct SchemaRecord memory"
                                    }
                                  },
                                  "id": 2515,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1760:9:5",
                                  "memberName": "revocable",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2340,
                                  "src": "1747:22:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_contract$_ISchemaResolver_$2982",
                                    "typeString": "contract ISchemaResolver"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 2508,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1686:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1690:12:5",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "1686:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 2516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1686:84:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2507,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1676:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 2517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1676:95:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2506,
                        "id": 2518,
                        "nodeType": "Return",
                        "src": "1669:102:5"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2499,
                    "nodeType": "StructuredDocumentation",
                    "src": "1453:119:5",
                    "text": "@dev Calculates a UID for a given schema.\n @param schemaRecord The input schema.\n @return schema UID."
                  },
                  "id": 2520,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getUID",
                  "nameLocation": "1586:7:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2502,
                        "mutability": "mutable",
                        "name": "schemaRecord",
                        "nameLocation": "1614:12:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2520,
                        "src": "1594:32:5",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SchemaRecord_$2343_memory_ptr",
                          "typeString": "struct SchemaRecord"
                        },
                        "typeName": {
                          "id": 2501,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2500,
                            "name": "SchemaRecord",
                            "nameLocations": [
                              "1594:12:5"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2343,
                            "src": "1594:12:5"
                          },
                          "referencedDeclaration": 2343,
                          "src": "1594:12:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SchemaRecord_$2343_storage_ptr",
                            "typeString": "struct SchemaRecord"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1593:34:5"
                  },
                  "returnParameters": {
                    "id": 2506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2505,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2520,
                        "src": "1650:7:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2504,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1650:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1649:9:5"
                  },
                  "scope": 2521,
                  "src": "1577:201:5",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 2522,
              "src": "344:1436:5",
              "usedErrors": [
                2407
              ],
              "usedEvents": [
                2356
              ]
            }
          ],
          "src": "33:1748:5"
        },
        "id": 5
      },
      "@ethereum-attestation-service/eas-contracts/contracts/Semver.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Semver.sol",
          "exportedSymbols": {
            "ISemver": [
              2389
            ],
            "Semver": [
              2588
            ],
            "Strings": [
              5345
            ]
          },
          "id": 2589,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2523,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:6"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "@openzeppelin/contracts/utils/Strings.sol",
              "id": 2525,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2589,
              "sourceUnit": 5346,
              "src": "58:68:6",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2524,
                    "name": "Strings",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5345,
                    "src": "67:7:6",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol",
              "file": "./ISemver.sol",
              "id": 2527,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2589,
              "sourceUnit": 2390,
              "src": "128:40:6",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2526,
                    "name": "ISemver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2389,
                    "src": "137:7:6",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2529,
                    "name": "ISemver",
                    "nameLocations": [
                      "269:7:6"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2389,
                    "src": "269:7:6"
                  },
                  "id": 2530,
                  "nodeType": "InheritanceSpecifier",
                  "src": "269:7:6"
                }
              ],
              "canonicalName": "Semver",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2528,
                "nodeType": "StructuredDocumentation",
                "src": "170:80:6",
                "text": "@title Semver\n @notice A simple contract for managing contract versions."
              },
              "fullyImplemented": true,
              "id": 2588,
              "linearizedBaseContracts": [
                2588,
                2389
              ],
              "name": "Semver",
              "nameLocation": "259:6:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 2532,
                  "mutability": "immutable",
                  "name": "_major",
                  "nameLocation": "349:6:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 2588,
                  "src": "323:32:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2531,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "323:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 2534,
                  "mutability": "immutable",
                  "name": "_minor",
                  "nameLocation": "428:6:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 2588,
                  "src": "402:32:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2533,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "402:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 2536,
                  "mutability": "immutable",
                  "name": "_patch",
                  "nameLocation": "507:6:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 2588,
                  "src": "481:32:6",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2535,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "481:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2558,
                    "nodeType": "Block",
                    "src": "749:79:6",
                    "statements": [
                      {
                        "expression": {
                          "id": 2548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2546,
                            "name": "_major",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2532,
                            "src": "759:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2547,
                            "name": "major",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2539,
                            "src": "768:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "759:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2549,
                        "nodeType": "ExpressionStatement",
                        "src": "759:14:6"
                      },
                      {
                        "expression": {
                          "id": 2552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2550,
                            "name": "_minor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2534,
                            "src": "783:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2551,
                            "name": "minor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2541,
                            "src": "792:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "783:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2553,
                        "nodeType": "ExpressionStatement",
                        "src": "783:14:6"
                      },
                      {
                        "expression": {
                          "id": 2556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2554,
                            "name": "_patch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2536,
                            "src": "807:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2555,
                            "name": "patch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2543,
                            "src": "816:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "807:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2557,
                        "nodeType": "ExpressionStatement",
                        "src": "807:14:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2537,
                    "nodeType": "StructuredDocumentation",
                    "src": "520:167:6",
                    "text": "@dev Create a new Semver instance.\n @param major Major version number.\n @param minor Minor version number.\n @param patch Patch version number."
                  },
                  "id": 2559,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2539,
                        "mutability": "mutable",
                        "name": "major",
                        "nameLocation": "712:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 2559,
                        "src": "704:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "704:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2541,
                        "mutability": "mutable",
                        "name": "minor",
                        "nameLocation": "727:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 2559,
                        "src": "719:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2540,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "719:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2543,
                        "mutability": "mutable",
                        "name": "patch",
                        "nameLocation": "742:5:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 2559,
                        "src": "734:13:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2542,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "734:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "703:45:6"
                  },
                  "returnParameters": {
                    "id": 2545,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "749:0:6"
                  },
                  "scope": 2588,
                  "src": "692:136:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2388
                  ],
                  "body": {
                    "id": 2586,
                    "nodeType": "Block",
                    "src": "1002:178:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 2571,
                                      "name": "_major",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2532,
                                      "src": "1089:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2569,
                                      "name": "Strings",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5345,
                                      "src": "1072:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Strings_$5345_$",
                                        "typeString": "type(library Strings)"
                                      }
                                    },
                                    "id": 2570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1080:8:6",
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4057,
                                    "src": "1072:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 2572,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1072:24:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "hexValue": "2e",
                                  "id": 2573,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1098:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
                                    "typeString": "literal_string \".\""
                                  },
                                  "value": "."
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 2576,
                                      "name": "_minor",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2534,
                                      "src": "1120:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2574,
                                      "name": "Strings",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5345,
                                      "src": "1103:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Strings_$5345_$",
                                        "typeString": "type(library Strings)"
                                      }
                                    },
                                    "id": 2575,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1111:8:6",
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4057,
                                    "src": "1103:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 2577,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1103:24:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "hexValue": "2e",
                                  "id": 2578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1129:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
                                    "typeString": "literal_string \".\""
                                  },
                                  "value": "."
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 2581,
                                      "name": "_patch",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2536,
                                      "src": "1151:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2579,
                                      "name": "Strings",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5345,
                                      "src": "1134:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Strings_$5345_$",
                                        "typeString": "type(library Strings)"
                                      }
                                    },
                                    "id": 2580,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1142:8:6",
                                    "memberName": "toString",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4057,
                                    "src": "1134:16:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 2582,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1134:24:6",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
                                    "typeString": "literal_string \".\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_6f010af653ebe3cb07d297a4ef13366103d392ceffa68dd48232e6e9ff2187bf",
                                    "typeString": "literal_string \".\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 2567,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1055:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "1059:12:6",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "1055:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 2583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1055:104:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 2566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1031:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 2565,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1031:6:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1031:142:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 2564,
                        "id": 2585,
                        "nodeType": "Return",
                        "src": "1012:161:6"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2560,
                    "nodeType": "StructuredDocumentation",
                    "src": "834:106:6",
                    "text": "@notice Returns the full semver contract version.\n @return Semver contract version as a string."
                  },
                  "functionSelector": "54fd4d50",
                  "id": 2587,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "version",
                  "nameLocation": "954:7:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2561,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "961:2:6"
                  },
                  "returnParameters": {
                    "id": 2564,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2563,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2587,
                        "src": "987:13:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2562,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "986:15:6"
                  },
                  "scope": 2588,
                  "src": "945:235:6",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2589,
              "src": "250:932:6",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "33:1150:6"
        },
        "id": 6
      },
      "@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol",
          "exportedSymbols": {
            "Address": [
              3297
            ],
            "AttestationRequestData": [
              2042
            ],
            "DeadlineExpired": [
              11
            ],
            "DelegatedAttestationRequest": [
              2063
            ],
            "DelegatedRevocationRequest": [
              2114
            ],
            "EIP1271Verifier": [
              2922
            ],
            "EIP712": [
              5920
            ],
            "InvalidSignature": [
              17
            ],
            "NO_EXPIRATION_TIME": [
              7
            ],
            "RevocationRequestData": [
              2093
            ],
            "Signature": [
              27
            ],
            "SignatureChecker": [
              6310
            ]
          },
          "id": 2923,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2590,
              "literals": [
                "solidity",
                "0.8",
                ".27"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:7"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
              "file": "@openzeppelin/contracts/utils/Address.sol",
              "id": 2592,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2923,
              "sourceUnit": 3298,
              "src": "58:68:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2591,
                    "name": "Address",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3297,
                    "src": "67:7:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/EIP712.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/EIP712.sol",
              "id": 2594,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2923,
              "sourceUnit": 5921,
              "src": "127:79:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2593,
                    "name": "EIP712",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5920,
                    "src": "136:6:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol",
              "file": "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol",
              "id": 2596,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2923,
              "sourceUnit": 6311,
              "src": "207:99:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2595,
                    "name": "SignatureChecker",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6310,
                    "src": "216:16:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Common.sol",
              "file": "./../Common.sol",
              "id": 2601,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2923,
              "sourceUnit": 66,
              "src": "307:99:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2597,
                    "name": "DeadlineExpired",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11,
                    "src": "316:15:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2598,
                    "name": "NO_EXPIRATION_TIME",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7,
                    "src": "333:18:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2599,
                    "name": "Signature",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 27,
                    "src": "353:9:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2600,
                    "name": "InvalidSignature",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17,
                    "src": "364:16:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol",
              "file": "../IEAS.sol",
              "id": 2606,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2923,
              "sourceUnit": 2327,
              "src": "427:149:7",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2602,
                    "name": "AttestationRequestData",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2042,
                    "src": "440:22:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2603,
                    "name": "DelegatedAttestationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2063,
                    "src": "468:27:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2604,
                    "name": "DelegatedRevocationRequest",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2114,
                    "src": "501:26:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2605,
                    "name": "RevocationRequestData",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2093,
                    "src": "533:21:7",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2608,
                    "name": "EIP712",
                    "nameLocations": [
                      "728:6:7"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5920,
                    "src": "728:6:7"
                  },
                  "id": 2609,
                  "nodeType": "InheritanceSpecifier",
                  "src": "728:6:7"
                }
              ],
              "canonicalName": "EIP1271Verifier",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2607,
                "nodeType": "StructuredDocumentation",
                "src": "578:113:7",
                "text": "@title EIP1271Verifier\n @notice EIP1271Verifier typed signatures verifier for EAS delegated attestations."
              },
              "fullyImplemented": true,
              "id": 2922,
              "linearizedBaseContracts": [
                2922,
                5920,
                3021
              ],
              "name": "EIP1271Verifier",
              "nameLocation": "709:15:7",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 2612,
                  "libraryName": {
                    "id": 2610,
                    "name": "Address",
                    "nameLocations": [
                      "747:7:7"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3297,
                    "src": "747:7:7"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "741:26:7",
                  "typeName": {
                    "id": 2611,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "759:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "errorSelector": "756688fe",
                  "id": 2614,
                  "name": "InvalidNonce",
                  "nameLocation": "779:12:7",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2613,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "791:2:7"
                  },
                  "src": "773:21:7"
                },
                {
                  "constant": true,
                  "id": 2617,
                  "mutability": "constant",
                  "name": "ATTEST_TYPEHASH",
                  "nameLocation": "1106:15:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 2922,
                  "src": "1081:109:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2615,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1081:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307866656232393235613032626165336461653438643432346130343337613262366163393339616139323330646463353561316137366630363564393838303736",
                    "id": 2616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1124:66:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115202972399329553217561559849011525395118111591336453520694826484904257683574_by_1",
                      "typeString": "int_const 1152...(70 digits omitted)...3574"
                    },
                    "value": "0xfeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d988076"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 2620,
                  "mutability": "constant",
                  "name": "REVOKE_TYPEHASH",
                  "nameLocation": "1433:15:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 2922,
                  "src": "1408:109:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2618,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1408:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307862356435353666303735383765633066303863663338363534356363343336326337303261303031363530633230353830303236313565653563396431653735",
                    "id": 2619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1451:66:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_82245564051319489498193945361642669454208219609561874227192399901364491984501_by_1",
                      "typeString": "int_const 8224...(69 digits omitted)...4501"
                    },
                    "value": "0xb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75"
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 2622,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1592:5:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 2922,
                  "src": "1577:20:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2621,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1577:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 2626,
                  "mutability": "mutable",
                  "name": "_nonces",
                  "nameLocation": "1688:7:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 2922,
                  "src": "1637:58:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 2625,
                    "keyName": "attester",
                    "keyNameLocation": "1653:8:7",
                    "keyType": {
                      "id": 2623,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1645:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1637:42:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueName": "nonce",
                    "valueNameLocation": "1673:5:7",
                    "valueType": {
                      "id": 2624,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1665:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2627,
                    "nodeType": "StructuredDocumentation",
                    "src": "1702:182:7",
                    "text": "@notice Emitted when users invalidate nonces by increasing their nonces to (higher) new values.\n @param oldNonce The previous nonce.\n @param newNonce The new value."
                  },
                  "eventSelector": "57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb7",
                  "id": 2633,
                  "name": "NonceIncreased",
                  "nameLocation": "1895:14:7",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2632,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2629,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "oldNonce",
                        "nameLocation": "1918:8:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2633,
                        "src": "1910:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2628,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1910:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2631,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newNonce",
                        "nameLocation": "1936:8:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2633,
                        "src": "1928:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2630,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1928:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1909:36:7"
                  },
                  "src": "1889:57:7"
                },
                {
                  "body": {
                    "id": 2649,
                    "nodeType": "Block",
                    "src": "2153:29:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 2647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2645,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2622,
                            "src": "2163:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2646,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2636,
                            "src": "2171:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "2163:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 2648,
                        "nodeType": "ExpressionStatement",
                        "src": "2163:12:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2634,
                    "nodeType": "StructuredDocumentation",
                    "src": "1952:119:7",
                    "text": "@dev Creates a new EIP1271Verifier instance.\n @param version The current major version of the signing domain"
                  },
                  "id": 2650,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 2641,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2636,
                          "src": "2138:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 2642,
                          "name": "version",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2638,
                          "src": "2144:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "id": 2643,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 2640,
                        "name": "EIP712",
                        "nameLocations": [
                          "2131:6:7"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5920,
                        "src": "2131:6:7"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "2131:21:7"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2636,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "2102:4:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2650,
                        "src": "2088:18:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2635,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2088:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2638,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "2122:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2650,
                        "src": "2108:21:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2637,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2108:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2087:43:7"
                  },
                  "returnParameters": {
                    "id": 2644,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2153:0:7"
                  },
                  "scope": 2922,
                  "src": "2076:106:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2659,
                    "nodeType": "Block",
                    "src": "2458:44:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2656,
                            "name": "_domainSeparatorV4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5816,
                            "src": "2475:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                              "typeString": "function () view returns (bytes32)"
                            }
                          },
                          "id": 2657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2475:20:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2655,
                        "id": 2658,
                        "nodeType": "Return",
                        "src": "2468:27:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2651,
                    "nodeType": "StructuredDocumentation",
                    "src": "2188:203:7",
                    "text": "@notice Returns the domain separator used in the encoding of the signatures for attest, and revoke.\n @return The domain separator used in the encoding of the signatures for attest, and revoke."
                  },
                  "functionSelector": "ed24911d",
                  "id": 2660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDomainSeparator",
                  "nameLocation": "2405:18:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2423:2:7"
                  },
                  "returnParameters": {
                    "id": 2655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2654,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2660,
                        "src": "2449:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2653,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2449:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2448:9:7"
                  },
                  "scope": 2922,
                  "src": "2396:106:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2672,
                    "nodeType": "Block",
                    "src": "2711:40:7",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 2668,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2626,
                            "src": "2728:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2670,
                          "indexExpression": {
                            "id": 2669,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2663,
                            "src": "2736:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2728:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2667,
                        "id": 2671,
                        "nodeType": "Return",
                        "src": "2721:23:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2661,
                    "nodeType": "StructuredDocumentation",
                    "src": "2508:131:7",
                    "text": "@notice Returns the current nonce per-account.\n @param account The requested account.\n @return The current nonce."
                  },
                  "functionSelector": "2d0335ab",
                  "id": 2673,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNonce",
                  "nameLocation": "2653:8:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2663,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2670:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2673,
                        "src": "2662:15:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2662,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2662:7:7",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2661:17:7"
                  },
                  "returnParameters": {
                    "id": 2667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2666,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2673,
                        "src": "2702:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2665,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2702:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2701:9:7"
                  },
                  "scope": 2922,
                  "src": "2644:107:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2681,
                    "nodeType": "Block",
                    "src": "2950:39:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 2679,
                          "name": "ATTEST_TYPEHASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2617,
                          "src": "2967:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2678,
                        "id": 2680,
                        "nodeType": "Return",
                        "src": "2960:22:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2674,
                    "nodeType": "StructuredDocumentation",
                    "src": "2757:127:7",
                    "text": "@notice Returns the EIP712 type hash for the attest function.\n @return The EIP712 type hash for the attest function."
                  },
                  "functionSelector": "12b11a17",
                  "id": 2682,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAttestTypeHash",
                  "nameLocation": "2898:17:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2675,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2915:2:7"
                  },
                  "returnParameters": {
                    "id": 2678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2677,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2682,
                        "src": "2941:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2676,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2941:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2940:9:7"
                  },
                  "scope": 2922,
                  "src": "2889:100:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2690,
                    "nodeType": "Block",
                    "src": "3188:39:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 2688,
                          "name": "REVOKE_TYPEHASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2620,
                          "src": "3205:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2687,
                        "id": 2689,
                        "nodeType": "Return",
                        "src": "3198:22:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2683,
                    "nodeType": "StructuredDocumentation",
                    "src": "2995:127:7",
                    "text": "@notice Returns the EIP712 type hash for the revoke function.\n @return The EIP712 type hash for the revoke function."
                  },
                  "functionSelector": "b83010d3",
                  "id": 2691,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getRevokeTypeHash",
                  "nameLocation": "3136:17:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2684,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3153:2:7"
                  },
                  "returnParameters": {
                    "id": 2687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2686,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2691,
                        "src": "3179:7:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2685,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3179:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3178:9:7"
                  },
                  "scope": 2922,
                  "src": "3127:100:7",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2699,
                    "nodeType": "Block",
                    "src": "3364:29:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 2697,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2622,
                          "src": "3381:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 2696,
                        "id": 2698,
                        "nodeType": "Return",
                        "src": "3374:12:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2692,
                    "nodeType": "StructuredDocumentation",
                    "src": "3233:69:7",
                    "text": "@notice Returns the EIP712 name.\n @return The EIP712 name."
                  },
                  "functionSelector": "17d7de7c",
                  "id": 2700,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getName",
                  "nameLocation": "3316:7:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2693,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3323:2:7"
                  },
                  "returnParameters": {
                    "id": 2696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2695,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2700,
                        "src": "3349:13:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2694,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3349:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3348:15:7"
                  },
                  "scope": 2922,
                  "src": "3307:86:7",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2733,
                    "nodeType": "Block",
                    "src": "3610:251:7",
                    "statements": [
                      {
                        "assignments": [
                          2707
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2707,
                            "mutability": "mutable",
                            "name": "oldNonce",
                            "nameLocation": "3628:8:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 2733,
                            "src": "3620:16:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2706,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3620:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2712,
                        "initialValue": {
                          "baseExpression": {
                            "id": 2708,
                            "name": "_nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2626,
                            "src": "3639:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2711,
                          "indexExpression": {
                            "expression": {
                              "id": 2709,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "3647:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3651:6:7",
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3647:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3639:19:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3620:38:7"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2713,
                            "name": "newNonce",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2703,
                            "src": "3672:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 2714,
                            "name": "oldNonce",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2707,
                            "src": "3684:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3672:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2720,
                        "nodeType": "IfStatement",
                        "src": "3668:72:7",
                        "trueBody": {
                          "id": 2719,
                          "nodeType": "Block",
                          "src": "3694:46:7",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2716,
                                  "name": "InvalidNonce",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2614,
                                  "src": "3715:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 2717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3715:14:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 2718,
                              "nodeType": "RevertStatement",
                              "src": "3708:21:7"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 2726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2721,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2626,
                              "src": "3750:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2724,
                            "indexExpression": {
                              "expression": {
                                "id": 2722,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3758:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3762:6:7",
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3758:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3750:19:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2725,
                            "name": "newNonce",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2703,
                            "src": "3772:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3750:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2727,
                        "nodeType": "ExpressionStatement",
                        "src": "3750:30:7"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2729,
                              "name": "oldNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2707,
                              "src": "3823:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2730,
                              "name": "newNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2703,
                              "src": "3843:8:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2728,
                            "name": "NonceIncreased",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2633,
                            "src": "3796:14:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 2731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "3813:8:7",
                            "3833:8:7"
                          ],
                          "names": [
                            "oldNonce",
                            "newNonce"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "3796:58:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2732,
                        "nodeType": "EmitStatement",
                        "src": "3791:63:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2701,
                    "nodeType": "StructuredDocumentation",
                    "src": "3399:156:7",
                    "text": "@notice Provides users an option to invalidate nonces by increasing their nonces to (higher) new values.\n @param newNonce The (higher) new value."
                  },
                  "functionSelector": "79f7573a",
                  "id": 2734,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseNonce",
                  "nameLocation": "3569:13:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2703,
                        "mutability": "mutable",
                        "name": "newNonce",
                        "nameLocation": "3591:8:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2734,
                        "src": "3583:16:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2702,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3583:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3582:18:7"
                  },
                  "returnParameters": {
                    "id": 2705,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3610:0:7"
                  },
                  "scope": 2922,
                  "src": "3560:301:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2825,
                    "nodeType": "Block",
                    "src": "4071:1075:7",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "id": 2744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2741,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2738,
                                "src": "4085:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                  "typeString": "struct DelegatedAttestationRequest memory"
                                }
                              },
                              "id": 2742,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4093:8:7",
                              "memberName": "deadline",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2062,
                              "src": "4085:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 2743,
                              "name": "NO_EXPIRATION_TIME",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7,
                              "src": "4105:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "4085:38:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "id": 2749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2745,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2738,
                                "src": "4127:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                  "typeString": "struct DelegatedAttestationRequest memory"
                                }
                              },
                              "id": 2746,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4135:8:7",
                              "memberName": "deadline",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2062,
                              "src": "4127:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2747,
                                "name": "_time",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2921,
                                "src": "4146:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                                  "typeString": "function () view returns (uint64)"
                                }
                              },
                              "id": 2748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4146:7:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "4127:26:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4085:68:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2755,
                        "nodeType": "IfStatement",
                        "src": "4081:123:7",
                        "trueBody": {
                          "id": 2754,
                          "nodeType": "Block",
                          "src": "4155:49:7",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2751,
                                  "name": "DeadlineExpired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11,
                                  "src": "4176:15:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 2752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4176:17:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 2753,
                              "nodeType": "RevertStatement",
                              "src": "4169:24:7"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2758
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2758,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "4244:4:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 2825,
                            "src": "4214:34:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                              "typeString": "struct AttestationRequestData"
                            },
                            "typeName": {
                              "id": 2757,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2756,
                                "name": "AttestationRequestData",
                                "nameLocations": [
                                  "4214:22:7"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2042,
                                "src": "4214:22:7"
                              },
                              "referencedDeclaration": 2042,
                              "src": "4214:22:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AttestationRequestData_$2042_storage_ptr",
                                "typeString": "struct AttestationRequestData"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2761,
                        "initialValue": {
                          "expression": {
                            "id": 2759,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2738,
                            "src": "4251:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                              "typeString": "struct DelegatedAttestationRequest memory"
                            }
                          },
                          "id": 2760,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4259:4:7",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2055,
                          "src": "4251:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                            "typeString": "struct AttestationRequestData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4214:49:7"
                      },
                      {
                        "assignments": [
                          2764
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2764,
                            "mutability": "mutable",
                            "name": "signature",
                            "nameLocation": "4290:9:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 2825,
                            "src": "4273:26:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                              "typeString": "struct Signature"
                            },
                            "typeName": {
                              "id": 2763,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2762,
                                "name": "Signature",
                                "nameLocations": [
                                  "4273:9:7"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 27,
                                "src": "4273:9:7"
                              },
                              "referencedDeclaration": 27,
                              "src": "4273:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Signature_$27_storage_ptr",
                                "typeString": "struct Signature"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2767,
                        "initialValue": {
                          "expression": {
                            "id": 2765,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2738,
                            "src": "4302:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                              "typeString": "struct DelegatedAttestationRequest memory"
                            }
                          },
                          "id": 2766,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4310:9:7",
                          "memberName": "signature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2058,
                          "src": "4302:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                            "typeString": "struct Signature memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4273:46:7"
                      },
                      {
                        "assignments": [
                          2769
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2769,
                            "mutability": "mutable",
                            "name": "hash",
                            "nameLocation": "4338:4:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 2825,
                            "src": "4330:12:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2768,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4330:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2803,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 2774,
                                      "name": "ATTEST_TYPEHASH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2617,
                                      "src": "4434:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2775,
                                        "name": "request",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2738,
                                        "src": "4471:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                          "typeString": "struct DelegatedAttestationRequest memory"
                                        }
                                      },
                                      "id": 2776,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4479:8:7",
                                      "memberName": "attester",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2060,
                                      "src": "4471:16:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2777,
                                        "name": "request",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2738,
                                        "src": "4509:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                          "typeString": "struct DelegatedAttestationRequest memory"
                                        }
                                      },
                                      "id": 2778,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4517:6:7",
                                      "memberName": "schema",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2052,
                                      "src": "4509:14:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2779,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2758,
                                        "src": "4545:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                          "typeString": "struct AttestationRequestData memory"
                                        }
                                      },
                                      "id": 2780,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4550:9:7",
                                      "memberName": "recipient",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2031,
                                      "src": "4545:14:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2781,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2758,
                                        "src": "4581:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                          "typeString": "struct AttestationRequestData memory"
                                        }
                                      },
                                      "id": 2782,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4586:14:7",
                                      "memberName": "expirationTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2033,
                                      "src": "4581:19:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2783,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2758,
                                        "src": "4622:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                          "typeString": "struct AttestationRequestData memory"
                                        }
                                      },
                                      "id": 2784,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4627:9:7",
                                      "memberName": "revocable",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2035,
                                      "src": "4622:14:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2785,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2758,
                                        "src": "4658:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                          "typeString": "struct AttestationRequestData memory"
                                        }
                                      },
                                      "id": 2786,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4663:6:7",
                                      "memberName": "refUID",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2037,
                                      "src": "4658:11:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 2788,
                                            "name": "data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2758,
                                            "src": "4701:4:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                              "typeString": "struct AttestationRequestData memory"
                                            }
                                          },
                                          "id": 2789,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "4706:4:7",
                                          "memberName": "data",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2039,
                                          "src": "4701:9:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 2787,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "4691:9:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 2790,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4691:20:7",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2791,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2758,
                                        "src": "4733:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AttestationRequestData_$2042_memory_ptr",
                                          "typeString": "struct AttestationRequestData memory"
                                        }
                                      },
                                      "id": 2792,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4738:5:7",
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2041,
                                      "src": "4733:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2797,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "4765:27:7",
                                      "subExpression": {
                                        "baseExpression": {
                                          "id": 2793,
                                          "name": "_nonces",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2626,
                                          "src": "4765:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 2796,
                                        "indexExpression": {
                                          "expression": {
                                            "id": 2794,
                                            "name": "request",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2738,
                                            "src": "4773:7:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                              "typeString": "struct DelegatedAttestationRequest memory"
                                            }
                                          },
                                          "id": 2795,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "4781:8:7",
                                          "memberName": "attester",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2060,
                                          "src": "4773:16:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4765:25:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2798,
                                        "name": "request",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2738,
                                        "src": "4814:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                          "typeString": "struct DelegatedAttestationRequest memory"
                                        }
                                      },
                                      "id": 2799,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4822:8:7",
                                      "memberName": "deadline",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2062,
                                      "src": "4814:16:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2772,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "4402:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 2773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "4406:6:7",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "4402:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 2800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4402:446:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2771,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "4375:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 2801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4375:487:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2770,
                            "name": "_hashTypedDataV4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5853,
                            "src": "4345:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view returns (bytes32)"
                            }
                          },
                          "id": 2802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4345:527:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4330:542:7"
                      },
                      {
                        "condition": {
                          "id": 2819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4899:180:7",
                          "subExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 2806,
                                  "name": "request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2738,
                                  "src": "4954:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                                    "typeString": "struct DelegatedAttestationRequest memory"
                                  }
                                },
                                "id": 2807,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4962:8:7",
                                "memberName": "attester",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2060,
                                "src": "4954:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2808,
                                "name": "hash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2769,
                                "src": "4988:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 2811,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2764,
                                      "src": "5027:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                                        "typeString": "struct Signature memory"
                                      }
                                    },
                                    "id": 2812,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5037:1:7",
                                    "memberName": "r",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24,
                                    "src": "5027:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2813,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2764,
                                      "src": "5040:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                                        "typeString": "struct Signature memory"
                                      }
                                    },
                                    "id": 2814,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5050:1:7",
                                    "memberName": "s",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26,
                                    "src": "5040:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2815,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2764,
                                      "src": "5053:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                                        "typeString": "struct Signature memory"
                                      }
                                    },
                                    "id": 2816,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "5063:1:7",
                                    "memberName": "v",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22,
                                    "src": "5053:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2809,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "5010:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 2810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "5014:12:7",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "5010:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 2817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5010:55:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 2804,
                                "name": "SignatureChecker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6310,
                                "src": "4900:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SignatureChecker_$6310_$",
                                  "typeString": "type(library SignatureChecker)"
                                }
                              },
                              "id": 2805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4917:19:7",
                              "memberName": "isValidSignatureNow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6068,
                              "src": "4900:36:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                "typeString": "function (address,bytes32,bytes memory) view returns (bool)"
                              }
                            },
                            "id": 2818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4900:179:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2824,
                        "nodeType": "IfStatement",
                        "src": "4882:258:7",
                        "trueBody": {
                          "id": 2823,
                          "nodeType": "Block",
                          "src": "5090:50:7",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2820,
                                  "name": "InvalidSignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17,
                                  "src": "5111:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 2821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5111:18:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 2822,
                              "nodeType": "RevertStatement",
                              "src": "5104:25:7"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2735,
                    "nodeType": "StructuredDocumentation",
                    "src": "3867:123:7",
                    "text": "@dev Verifies delegated attestation request.\n @param request The arguments of the delegated attestation request."
                  },
                  "id": 2826,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifyAttest",
                  "nameLocation": "4004:13:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2739,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2738,
                        "mutability": "mutable",
                        "name": "request",
                        "nameLocation": "4053:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2826,
                        "src": "4018:42:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_memory_ptr",
                          "typeString": "struct DelegatedAttestationRequest"
                        },
                        "typeName": {
                          "id": 2737,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2736,
                            "name": "DelegatedAttestationRequest",
                            "nameLocations": [
                              "4018:27:7"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2063,
                            "src": "4018:27:7"
                          },
                          "referencedDeclaration": 2063,
                          "src": "4018:27:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DelegatedAttestationRequest_$2063_storage_ptr",
                            "typeString": "struct DelegatedAttestationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4017:44:7"
                  },
                  "returnParameters": {
                    "id": 2740,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4071:0:7"
                  },
                  "scope": 2922,
                  "src": "3995:1151:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2907,
                    "nodeType": "Block",
                    "src": "5353:913:7",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "id": 2836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2833,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2830,
                                "src": "5367:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                  "typeString": "struct DelegatedRevocationRequest memory"
                                }
                              },
                              "id": 2834,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5375:8:7",
                              "memberName": "deadline",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2113,
                              "src": "5367:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 2835,
                              "name": "NO_EXPIRATION_TIME",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7,
                              "src": "5387:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "5367:38:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "id": 2841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2837,
                                "name": "request",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2830,
                                "src": "5409:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                  "typeString": "struct DelegatedRevocationRequest memory"
                                }
                              },
                              "id": 2838,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5417:8:7",
                              "memberName": "deadline",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2113,
                              "src": "5409:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2839,
                                "name": "_time",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2921,
                                "src": "5428:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_uint64_$",
                                  "typeString": "function () view returns (uint64)"
                                }
                              },
                              "id": 2840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5428:7:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "5409:26:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5367:68:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2847,
                        "nodeType": "IfStatement",
                        "src": "5363:123:7",
                        "trueBody": {
                          "id": 2846,
                          "nodeType": "Block",
                          "src": "5437:49:7",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2843,
                                  "name": "DeadlineExpired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11,
                                  "src": "5458:15:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 2844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5458:17:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 2845,
                              "nodeType": "RevertStatement",
                              "src": "5451:24:7"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2850
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2850,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "5525:4:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 2907,
                            "src": "5496:33:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                              "typeString": "struct RevocationRequestData"
                            },
                            "typeName": {
                              "id": 2849,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2848,
                                "name": "RevocationRequestData",
                                "nameLocations": [
                                  "5496:21:7"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2093,
                                "src": "5496:21:7"
                              },
                              "referencedDeclaration": 2093,
                              "src": "5496:21:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RevocationRequestData_$2093_storage_ptr",
                                "typeString": "struct RevocationRequestData"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2853,
                        "initialValue": {
                          "expression": {
                            "id": 2851,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2830,
                            "src": "5532:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                              "typeString": "struct DelegatedRevocationRequest memory"
                            }
                          },
                          "id": 2852,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5540:4:7",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2106,
                          "src": "5532:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                            "typeString": "struct RevocationRequestData memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5496:48:7"
                      },
                      {
                        "assignments": [
                          2856
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2856,
                            "mutability": "mutable",
                            "name": "signature",
                            "nameLocation": "5571:9:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 2907,
                            "src": "5554:26:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                              "typeString": "struct Signature"
                            },
                            "typeName": {
                              "id": 2855,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2854,
                                "name": "Signature",
                                "nameLocations": [
                                  "5554:9:7"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 27,
                                "src": "5554:9:7"
                              },
                              "referencedDeclaration": 27,
                              "src": "5554:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Signature_$27_storage_ptr",
                                "typeString": "struct Signature"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2859,
                        "initialValue": {
                          "expression": {
                            "id": 2857,
                            "name": "request",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2830,
                            "src": "5583:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                              "typeString": "struct DelegatedRevocationRequest memory"
                            }
                          },
                          "id": 2858,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5591:9:7",
                          "memberName": "signature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2109,
                          "src": "5583:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                            "typeString": "struct Signature memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5554:46:7"
                      },
                      {
                        "assignments": [
                          2861
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2861,
                            "mutability": "mutable",
                            "name": "hash",
                            "nameLocation": "5619:4:7",
                            "nodeType": "VariableDeclaration",
                            "scope": 2907,
                            "src": "5611:12:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2860,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5611:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2885,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 2866,
                                      "name": "REVOKE_TYPEHASH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2620,
                                      "src": "5715:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2867,
                                        "name": "request",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2830,
                                        "src": "5752:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                          "typeString": "struct DelegatedRevocationRequest memory"
                                        }
                                      },
                                      "id": 2868,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5760:7:7",
                                      "memberName": "revoker",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2111,
                                      "src": "5752:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2869,
                                        "name": "request",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2830,
                                        "src": "5789:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                          "typeString": "struct DelegatedRevocationRequest memory"
                                        }
                                      },
                                      "id": 2870,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5797:6:7",
                                      "memberName": "schema",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2103,
                                      "src": "5789:14:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2871,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2850,
                                        "src": "5825:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                          "typeString": "struct RevocationRequestData memory"
                                        }
                                      },
                                      "id": 2872,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5830:3:7",
                                      "memberName": "uid",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2090,
                                      "src": "5825:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2873,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2850,
                                        "src": "5855:4:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RevocationRequestData_$2093_memory_ptr",
                                          "typeString": "struct RevocationRequestData memory"
                                        }
                                      },
                                      "id": 2874,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5860:5:7",
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2092,
                                      "src": "5855:10:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2879,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "5887:26:7",
                                      "subExpression": {
                                        "baseExpression": {
                                          "id": 2875,
                                          "name": "_nonces",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2626,
                                          "src": "5887:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 2878,
                                        "indexExpression": {
                                          "expression": {
                                            "id": 2876,
                                            "name": "request",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2830,
                                            "src": "5895:7:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                              "typeString": "struct DelegatedRevocationRequest memory"
                                            }
                                          },
                                          "id": 2877,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "5903:7:7",
                                          "memberName": "revoker",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2111,
                                          "src": "5895:15:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "5887:24:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 2880,
                                        "name": "request",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2830,
                                        "src": "5935:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                          "typeString": "struct DelegatedRevocationRequest memory"
                                        }
                                      },
                                      "id": 2881,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "5943:8:7",
                                      "memberName": "deadline",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2113,
                                      "src": "5935:16:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    ],
                                    "expression": {
                                      "id": 2864,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "5683:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 2865,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "5687:6:7",
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "5683:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 2882,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5683:286:7",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2863,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "5656:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 2883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5656:327:7",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2862,
                            "name": "_hashTypedDataV4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5853,
                            "src": "5626:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view returns (bytes32)"
                            }
                          },
                          "id": 2884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5626:367:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5611:382:7"
                      },
                      {
                        "condition": {
                          "id": 2901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6020:179:7",
                          "subExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 2888,
                                  "name": "request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2830,
                                  "src": "6075:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                                    "typeString": "struct DelegatedRevocationRequest memory"
                                  }
                                },
                                "id": 2889,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "6083:7:7",
                                "memberName": "revoker",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2111,
                                "src": "6075:15:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 2890,
                                "name": "hash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2861,
                                "src": "6108:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 2893,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2856,
                                      "src": "6147:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                                        "typeString": "struct Signature memory"
                                      }
                                    },
                                    "id": 2894,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "6157:1:7",
                                    "memberName": "r",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 24,
                                    "src": "6147:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2895,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2856,
                                      "src": "6160:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                                        "typeString": "struct Signature memory"
                                      }
                                    },
                                    "id": 2896,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "6170:1:7",
                                    "memberName": "s",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 26,
                                    "src": "6160:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2897,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2856,
                                      "src": "6173:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Signature_$27_memory_ptr",
                                        "typeString": "struct Signature memory"
                                      }
                                    },
                                    "id": 2898,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "6183:1:7",
                                    "memberName": "v",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 22,
                                    "src": "6173:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2891,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "6130:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 2892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "6134:12:7",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "6130:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 2899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6130:55:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 2886,
                                "name": "SignatureChecker",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6310,
                                "src": "6021:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SignatureChecker_$6310_$",
                                  "typeString": "type(library SignatureChecker)"
                                }
                              },
                              "id": 2887,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6038:19:7",
                              "memberName": "isValidSignatureNow",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6068,
                              "src": "6021:36:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                "typeString": "function (address,bytes32,bytes memory) view returns (bool)"
                              }
                            },
                            "id": 2900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6021:178:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2906,
                        "nodeType": "IfStatement",
                        "src": "6003:257:7",
                        "trueBody": {
                          "id": 2905,
                          "nodeType": "Block",
                          "src": "6210:50:7",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2902,
                                  "name": "InvalidSignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17,
                                  "src": "6231:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 2903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6231:18:7",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 2904,
                              "nodeType": "RevertStatement",
                              "src": "6224:25:7"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2827,
                    "nodeType": "StructuredDocumentation",
                    "src": "5152:121:7",
                    "text": "@dev Verifies delegated revocation request.\n @param request The arguments of the delegated revocation request."
                  },
                  "id": 2908,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifyRevoke",
                  "nameLocation": "5287:13:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2830,
                        "mutability": "mutable",
                        "name": "request",
                        "nameLocation": "5335:7:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2908,
                        "src": "5301:41:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_memory_ptr",
                          "typeString": "struct DelegatedRevocationRequest"
                        },
                        "typeName": {
                          "id": 2829,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2828,
                            "name": "DelegatedRevocationRequest",
                            "nameLocations": [
                              "5301:26:7"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2114,
                            "src": "5301:26:7"
                          },
                          "referencedDeclaration": 2114,
                          "src": "5301:26:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DelegatedRevocationRequest_$2114_storage_ptr",
                            "typeString": "struct DelegatedRevocationRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5300:43:7"
                  },
                  "returnParameters": {
                    "id": 2832,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5353:0:7"
                  },
                  "scope": 2922,
                  "src": "5278:988:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2920,
                    "nodeType": "Block",
                    "src": "6476:47:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 2916,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "6500:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2917,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6506:9:7",
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "6500:15:7",
                              "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": "6493:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint64_$",
                              "typeString": "type(uint64)"
                            },
                            "typeName": {
                              "id": 2914,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "6493:6:7",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6493:23:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 2913,
                        "id": 2919,
                        "nodeType": "Return",
                        "src": "6486:30:7"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2909,
                    "nodeType": "StructuredDocumentation",
                    "src": "6272:143:7",
                    "text": "@dev Returns the current's block timestamp. This method is overridden during tests and used to simulate the\n     current block time."
                  },
                  "id": 2921,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_time",
                  "nameLocation": "6429:5:7",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2910,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6434:2:7"
                  },
                  "returnParameters": {
                    "id": 2913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2912,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2921,
                        "src": "6468:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 2911,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "6468:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6467:8:7"
                  },
                  "scope": 2922,
                  "src": "6420:103:7",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 2923,
              "src": "691:5834:7",
              "usedErrors": [
                2614,
                3616,
                3618
              ],
              "usedEvents": [
                2633,
                3001
              ]
            }
          ],
          "src": "33:6493:7"
        },
        "id": 7
      },
      "@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol": {
        "ast": {
          "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol",
          "exportedSymbols": {
            "Attestation": [
              49
            ],
            "ISchemaResolver": [
              2982
            ],
            "ISemver": [
              2389
            ]
          },
          "id": 2983,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2924,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:8"
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/Common.sol",
              "file": "./../Common.sol",
              "id": 2926,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2983,
              "sourceUnit": 66,
              "src": "58:46:8",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2925,
                    "name": "Attestation",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 49,
                    "src": "67:11:8",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol",
              "file": "./../ISemver.sol",
              "id": 2928,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2983,
              "sourceUnit": 2390,
              "src": "105:43:8",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2927,
                    "name": "ISemver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2389,
                    "src": "114:7:8",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2930,
                    "name": "ISemver",
                    "nameLocations": [
                      "264:7:8"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2389,
                    "src": "264:7:8"
                  },
                  "id": 2931,
                  "nodeType": "InheritanceSpecifier",
                  "src": "264:7:8"
                }
              ],
              "canonicalName": "ISchemaResolver",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2929,
                "nodeType": "StructuredDocumentation",
                "src": "150:85:8",
                "text": "@title ISchemaResolver\n @notice The interface of an optional schema resolver."
              },
              "fullyImplemented": false,
              "id": 2982,
              "linearizedBaseContracts": [
                2982,
                2389
              ],
              "name": "ISchemaResolver",
              "nameLocation": "245:15:8",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2932,
                    "nodeType": "StructuredDocumentation",
                    "src": "278:112:8",
                    "text": "@notice Checks if the resolver can be sent ETH.\n @return Whether the resolver supports ETH transfers."
                  },
                  "functionSelector": "ce46e046",
                  "id": 2937,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isPayable",
                  "nameLocation": "404:9:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2933,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "413:2:8"
                  },
                  "returnParameters": {
                    "id": 2936,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2935,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2937,
                        "src": "439:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2934,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "439:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "438:6:8"
                  },
                  "scope": 2982,
                  "src": "395:50:8",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2938,
                    "nodeType": "StructuredDocumentation",
                    "src": "451:167:8",
                    "text": "@notice Processes an attestation and verifies whether it's valid.\n @param attestation The new attestation.\n @return Whether the attestation is valid."
                  },
                  "functionSelector": "e60c3505",
                  "id": 2946,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "attest",
                  "nameLocation": "632:6:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2941,
                        "mutability": "mutable",
                        "name": "attestation",
                        "nameLocation": "660:11:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2946,
                        "src": "639:32:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Attestation_$49_calldata_ptr",
                          "typeString": "struct Attestation"
                        },
                        "typeName": {
                          "id": 2940,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2939,
                            "name": "Attestation",
                            "nameLocations": [
                              "639:11:8"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 49,
                            "src": "639:11:8"
                          },
                          "referencedDeclaration": 49,
                          "src": "639:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                            "typeString": "struct Attestation"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "638:34:8"
                  },
                  "returnParameters": {
                    "id": 2945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2944,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2946,
                        "src": "699:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2943,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "699:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "698:6:8"
                  },
                  "scope": 2982,
                  "src": "623:82:8",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2947,
                    "nodeType": "StructuredDocumentation",
                    "src": "711:268:8",
                    "text": "@notice Processes multiple attestations and verifies whether they are valid.\n @param attestations The new attestations.\n @param values Explicit ETH amounts which were sent with each attestation.\n @return Whether all the attestations are valid."
                  },
                  "functionSelector": "91db0b7e",
                  "id": 2959,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiAttest",
                  "nameLocation": "993:11:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2951,
                        "mutability": "mutable",
                        "name": "attestations",
                        "nameLocation": "1037:12:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2959,
                        "src": "1014:35:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Attestation_$49_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Attestation[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2949,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2948,
                              "name": "Attestation",
                              "nameLocations": [
                                "1014:11:8"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 49,
                              "src": "1014:11:8"
                            },
                            "referencedDeclaration": 49,
                            "src": "1014:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                              "typeString": "struct Attestation"
                            }
                          },
                          "id": 2950,
                          "nodeType": "ArrayTypeName",
                          "src": "1014:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Attestation_$49_storage_$dyn_storage_ptr",
                            "typeString": "struct Attestation[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2954,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "1078:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2959,
                        "src": "1059:25:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2952,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1059:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2953,
                          "nodeType": "ArrayTypeName",
                          "src": "1059:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1004:86:8"
                  },
                  "returnParameters": {
                    "id": 2958,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2957,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2959,
                        "src": "1117:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2956,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1117:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1116:6:8"
                  },
                  "scope": 2982,
                  "src": "984:139:8",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2960,
                    "nodeType": "StructuredDocumentation",
                    "src": "1129:205:8",
                    "text": "@notice Processes an attestation revocation and verifies if it can be revoked.\n @param attestation The existing attestation to be revoked.\n @return Whether the attestation can be revoked."
                  },
                  "functionSelector": "e49617e1",
                  "id": 2968,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "revoke",
                  "nameLocation": "1348:6:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2964,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2963,
                        "mutability": "mutable",
                        "name": "attestation",
                        "nameLocation": "1376:11:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2968,
                        "src": "1355:32:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Attestation_$49_calldata_ptr",
                          "typeString": "struct Attestation"
                        },
                        "typeName": {
                          "id": 2962,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2961,
                            "name": "Attestation",
                            "nameLocations": [
                              "1355:11:8"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 49,
                            "src": "1355:11:8"
                          },
                          "referencedDeclaration": 49,
                          "src": "1355:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                            "typeString": "struct Attestation"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1354:34:8"
                  },
                  "returnParameters": {
                    "id": 2967,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2966,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2968,
                        "src": "1415:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2965,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1415:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1414:6:8"
                  },
                  "scope": 2982,
                  "src": "1339:82:8",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2969,
                    "nodeType": "StructuredDocumentation",
                    "src": "1427:297:8",
                    "text": "@notice Processes revocation of multiple attestation and verifies they can be revoked.\n @param attestations The existing attestations to be revoked.\n @param values Explicit ETH amounts which were sent with each revocation.\n @return Whether the attestations can be revoked."
                  },
                  "functionSelector": "88e5b2d9",
                  "id": 2981,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "multiRevoke",
                  "nameLocation": "1738:11:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2977,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2973,
                        "mutability": "mutable",
                        "name": "attestations",
                        "nameLocation": "1782:12:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2981,
                        "src": "1759:35:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Attestation_$49_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Attestation[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2971,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2970,
                              "name": "Attestation",
                              "nameLocations": [
                                "1759:11:8"
                              ],
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 49,
                              "src": "1759:11:8"
                            },
                            "referencedDeclaration": 49,
                            "src": "1759:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Attestation_$49_storage_ptr",
                              "typeString": "struct Attestation"
                            }
                          },
                          "id": 2972,
                          "nodeType": "ArrayTypeName",
                          "src": "1759:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Attestation_$49_storage_$dyn_storage_ptr",
                            "typeString": "struct Attestation[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2976,
                        "mutability": "mutable",
                        "name": "values",
                        "nameLocation": "1823:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2981,
                        "src": "1804:25:8",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2974,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1804:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2975,
                          "nodeType": "ArrayTypeName",
                          "src": "1804:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1749:86:8"
                  },
                  "returnParameters": {
                    "id": 2980,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2979,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2981,
                        "src": "1862:4:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2978,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1862:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1861:6:8"
                  },
                  "scope": 2982,
                  "src": "1729:139:8",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2983,
              "src": "235:1635:8",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "33:1838:8"
        },
        "id": 8
      },
      "@openzeppelin/contracts/interfaces/IERC1271.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/interfaces/IERC1271.sol",
          "exportedSymbols": {
            "IERC1271": [
              2996
            ]
          },
          "id": 2997,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2984,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:24:9"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC1271",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2985,
                "nodeType": "StructuredDocumentation",
                "src": "133:160:9",
                "text": " @dev Interface of the ERC-1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]."
              },
              "fullyImplemented": false,
              "id": 2996,
              "linearizedBaseContracts": [
                2996
              ],
              "name": "IERC1271",
              "nameLocation": "304:8:9",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2986,
                    "nodeType": "StructuredDocumentation",
                    "src": "319:221:9",
                    "text": " @dev Should return whether the signature provided is valid for the provided data\n @param hash      Hash of the data to be signed\n @param signature Signature byte array associated with `hash`"
                  },
                  "functionSelector": "1626ba7e",
                  "id": 2995,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSignature",
                  "nameLocation": "554:16:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2988,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "579:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2995,
                        "src": "571:12:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2987,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "571:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2990,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "600:9:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2995,
                        "src": "585:24:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2989,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "585:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "570:40:9"
                  },
                  "returnParameters": {
                    "id": 2994,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2993,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nameLocation": "641:10:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2995,
                        "src": "634:17:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2992,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "634:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "633:19:9"
                  },
                  "scope": 2996,
                  "src": "545:108:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2997,
              "src": "294:361:9",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "107:549:9"
        },
        "id": 9
      },
      "@openzeppelin/contracts/interfaces/IERC5267.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/interfaces/IERC5267.sol",
          "exportedSymbols": {
            "IERC5267": [
              3021
            ]
          },
          "id": 3022,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2998,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".16"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:25:10"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC5267",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 3021,
              "linearizedBaseContracts": [
                3021
              ],
              "name": "IERC5267",
              "nameLocation": "144:8:10",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2999,
                    "nodeType": "StructuredDocumentation",
                    "src": "159:84:10",
                    "text": " @dev MAY be emitted to signal that the domain could have changed."
                  },
                  "eventSelector": "0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31",
                  "id": 3001,
                  "name": "EIP712DomainChanged",
                  "nameLocation": "254:19:10",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3000,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "273:2:10"
                  },
                  "src": "248:28:10"
                },
                {
                  "documentation": {
                    "id": 3002,
                    "nodeType": "StructuredDocumentation",
                    "src": "282:140:10",
                    "text": " @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n signature."
                  },
                  "functionSelector": "84b0196e",
                  "id": 3020,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "eip712Domain",
                  "nameLocation": "436:12:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3003,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "448:2:10"
                  },
                  "returnParameters": {
                    "id": 3019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3005,
                        "mutability": "mutable",
                        "name": "fields",
                        "nameLocation": "518:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 3020,
                        "src": "511:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 3004,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "511:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3007,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "552:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 3020,
                        "src": "538:18:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3006,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "538:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3009,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "584:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 3020,
                        "src": "570:21:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3008,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "570:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3011,
                        "mutability": "mutable",
                        "name": "chainId",
                        "nameLocation": "613:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 3020,
                        "src": "605:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3010,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "605:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3013,
                        "mutability": "mutable",
                        "name": "verifyingContract",
                        "nameLocation": "642:17:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 3020,
                        "src": "634:25:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3012,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "634:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3015,
                        "mutability": "mutable",
                        "name": "salt",
                        "nameLocation": "681:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 3020,
                        "src": "673:12:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3014,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "673:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3018,
                        "mutability": "mutable",
                        "name": "extensions",
                        "nameLocation": "716:10:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 3020,
                        "src": "699:27:10",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3016,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "699:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3017,
                          "nodeType": "ArrayTypeName",
                          "src": "699:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "497:239:10"
                  },
                  "scope": 3021,
                  "src": "427:310:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3022,
              "src": "134:605:10",
              "usedErrors": [],
              "usedEvents": [
                3001
              ]
            }
          ],
          "src": "107:633:10"
        },
        "id": 10
      },
      "@openzeppelin/contracts/interfaces/IERC7913.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/interfaces/IERC7913.sol",
          "exportedSymbols": {
            "IERC7913SignatureVerifier": [
              3037
            ]
          },
          "id": 3038,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3023,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "107:24:11"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "IERC7913SignatureVerifier",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3024,
                "nodeType": "StructuredDocumentation",
                "src": "133:45:11",
                "text": " @dev Signature verifier interface."
              },
              "fullyImplemented": false,
              "id": 3037,
              "linearizedBaseContracts": [
                3037
              ],
              "name": "IERC7913SignatureVerifier",
              "nameLocation": "189:25:11",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3025,
                    "nodeType": "StructuredDocumentation",
                    "src": "221:338:11",
                    "text": " @dev Verifies `signature` as a valid signature of `hash` by `key`.\n MUST return the bytes4 magic value IERC7913SignatureVerifier.verify.selector if the signature is valid.\n SHOULD return 0xffffffff or revert if the signature is not valid.\n SHOULD return 0xffffffff or revert if the key is empty"
                  },
                  "functionSelector": "024ad318",
                  "id": 3036,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verify",
                  "nameLocation": "573:6:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3032,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3027,
                        "mutability": "mutable",
                        "name": "key",
                        "nameLocation": "595:3:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 3036,
                        "src": "580:18:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3026,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "580:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3029,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "608:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 3036,
                        "src": "600:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3028,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "600:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3031,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "629:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 3036,
                        "src": "614:24:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3030,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "614:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "579:60:11"
                  },
                  "returnParameters": {
                    "id": 3035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3034,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3036,
                        "src": "663:6:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3033,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "663:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "662:8:11"
                  },
                  "scope": 3037,
                  "src": "564:107:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3038,
              "src": "179:494:11",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "107:567:11"
        },
        "id": 11
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
          "exportedSymbols": {
            "Address": [
              3297
            ],
            "Errors": [
              3550
            ]
          },
          "id": 3298,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3039,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:24:12"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Errors.sol",
              "file": "./Errors.sol",
              "id": 3041,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3298,
              "sourceUnit": 3551,
              "src": "127:36:12",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3040,
                    "name": "Errors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3550,
                    "src": "135:6:12",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Address",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3042,
                "nodeType": "StructuredDocumentation",
                "src": "165:67:12",
                "text": " @dev Collection of functions related to the address type"
              },
              "fullyImplemented": true,
              "id": 3297,
              "linearizedBaseContracts": [
                3297
              ],
              "name": "Address",
              "nameLocation": "241:7:12",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3043,
                    "nodeType": "StructuredDocumentation",
                    "src": "255:75:12",
                    "text": " @dev There's no code at `target` (it is not a contract)."
                  },
                  "errorSelector": "9996b315",
                  "id": 3047,
                  "name": "AddressEmptyCode",
                  "nameLocation": "341:16:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3046,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3045,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "366:6:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3047,
                        "src": "358:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3044,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "358:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "357:16:12"
                  },
                  "src": "335:39:12"
                },
                {
                  "body": {
                    "id": 3094,
                    "nodeType": "Block",
                    "src": "1361:294:12",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3057,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1383:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Address_$3297",
                                    "typeString": "library Address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Address_$3297",
                                    "typeString": "library Address"
                                  }
                                ],
                                "id": 3056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1375:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3055,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1375:7:12",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1375:13:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1389:7:12",
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "1375:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 3060,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3052,
                            "src": "1399:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1375:30:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3074,
                        "nodeType": "IfStatement",
                        "src": "1371:125:12",
                        "trueBody": {
                          "id": 3073,
                          "nodeType": "Block",
                          "src": "1407:89:12",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3067,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "1463:4:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Address_$3297",
                                            "typeString": "library Address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_Address_$3297",
                                            "typeString": "library Address"
                                          }
                                        ],
                                        "id": 3066,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1455:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3065,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1455:7:12",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3068,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1455:13:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 3069,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1469:7:12",
                                    "memberName": "balance",
                                    "nodeType": "MemberAccess",
                                    "src": "1455:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3070,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3052,
                                    "src": "1478:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3062,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3550,
                                    "src": "1428:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Errors_$3550_$",
                                      "typeString": "type(library Errors)"
                                    }
                                  },
                                  "id": 3064,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1435:19:12",
                                  "memberName": "InsufficientBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3538,
                                  "src": "1428:26:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint256,uint256) pure returns (error)"
                                  }
                                },
                                "id": 3071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1428:57:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 3072,
                              "nodeType": "RevertStatement",
                              "src": "1421:64:12"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          3076,
                          3078
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3076,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "1512:7:12",
                            "nodeType": "VariableDeclaration",
                            "scope": 3094,
                            "src": "1507:12:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3075,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1507:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3078,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "1534:10:12",
                            "nodeType": "VariableDeclaration",
                            "scope": 3094,
                            "src": "1521:23:12",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3077,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1521:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3085,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 3083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1578:2:12",
                              "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": 3079,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3050,
                                "src": "1548:9:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "id": 3080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1558:4:12",
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "1548:14:12",
                              "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": 3082,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 3081,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3052,
                                "src": "1570:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "1548:29:12",
                            "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": 3084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1548:33:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1506:75:12"
                      },
                      {
                        "condition": {
                          "id": 3087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1595:8:12",
                          "subExpression": {
                            "id": 3086,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3076,
                            "src": "1596:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3093,
                        "nodeType": "IfStatement",
                        "src": "1591:58:12",
                        "trueBody": {
                          "id": 3092,
                          "nodeType": "Block",
                          "src": "1605:44:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3089,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3078,
                                    "src": "1627:10:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3088,
                                  "name": "_revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3296,
                                  "src": "1619:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory) pure"
                                  }
                                },
                                "id": 3090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1619:19:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3091,
                              "nodeType": "ExpressionStatement",
                              "src": "1619:19:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3048,
                    "nodeType": "StructuredDocumentation",
                    "src": "380:905:12",
                    "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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                  },
                  "id": 3095,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sendValue",
                  "nameLocation": "1299:9:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3050,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "1325:9:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3095,
                        "src": "1309:25:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3049,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1309:15:12",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3052,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1344:6:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3095,
                        "src": "1336:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3051,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1336:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1308:43:12"
                  },
                  "returnParameters": {
                    "id": 3054,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1361:0:12"
                  },
                  "scope": 3297,
                  "src": "1290:365:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3111,
                    "nodeType": "Block",
                    "src": "2589:62:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3106,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3098,
                              "src": "2628:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3107,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3100,
                              "src": "2636:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 3108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2642:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "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"
                              }
                            ],
                            "id": 3105,
                            "name": "functionCallWithValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3162,
                            "src": "2606:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,uint256) returns (bytes memory)"
                            }
                          },
                          "id": 3109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2606:38:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3104,
                        "id": 3110,
                        "nodeType": "Return",
                        "src": "2599:45:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3096,
                    "nodeType": "StructuredDocumentation",
                    "src": "1661:834:12",
                    "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 or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {Errors.FailedCall} error.\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."
                  },
                  "id": 3112,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCall",
                  "nameLocation": "2509:12:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3098,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "2530:6:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3112,
                        "src": "2522:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3097,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2522:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3100,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2551:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3112,
                        "src": "2538:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3099,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2538:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2521:35:12"
                  },
                  "returnParameters": {
                    "id": 3104,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3103,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3112,
                        "src": "2575:12:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3102,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2575:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2574:14:12"
                  },
                  "scope": 3297,
                  "src": "2500:151:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3161,
                    "nodeType": "Block",
                    "src": "3088:294:12",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3126,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3110:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Address_$3297",
                                    "typeString": "library Address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Address_$3297",
                                    "typeString": "library Address"
                                  }
                                ],
                                "id": 3125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3102:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3124,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3102:7:12",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3102:13:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3116:7:12",
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "3102:21:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 3129,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3119,
                            "src": "3126:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3102:29:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3143,
                        "nodeType": "IfStatement",
                        "src": "3098:123:12",
                        "trueBody": {
                          "id": 3142,
                          "nodeType": "Block",
                          "src": "3133:88:12",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 3136,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "3189:4:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_Address_$3297",
                                            "typeString": "library Address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_Address_$3297",
                                            "typeString": "library Address"
                                          }
                                        ],
                                        "id": 3135,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3181:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3134,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3181:7:12",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3137,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3181:13:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 3138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3195:7:12",
                                    "memberName": "balance",
                                    "nodeType": "MemberAccess",
                                    "src": "3181:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3139,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3119,
                                    "src": "3204:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3131,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3550,
                                    "src": "3154:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Errors_$3550_$",
                                      "typeString": "type(library Errors)"
                                    }
                                  },
                                  "id": 3133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "3161:19:12",
                                  "memberName": "InsufficientBalance",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3538,
                                  "src": "3154:26:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint256,uint256) pure returns (error)"
                                  }
                                },
                                "id": 3140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3154:56:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 3141,
                              "nodeType": "RevertStatement",
                              "src": "3147:63:12"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          3145,
                          3147
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3145,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "3236:7:12",
                            "nodeType": "VariableDeclaration",
                            "scope": 3161,
                            "src": "3231:12:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3144,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3231:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3147,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "3258:10:12",
                            "nodeType": "VariableDeclaration",
                            "scope": 3161,
                            "src": "3245:23:12",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3146,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3245:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3154,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3152,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3117,
                              "src": "3298:4:12",
                              "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": 3148,
                                "name": "target",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3115,
                                "src": "3272:6:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3149,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3279:4:12",
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "3272:11:12",
                              "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": 3151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 3150,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3119,
                                "src": "3291:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "3272:25:12",
                            "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": 3153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3272:31:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3230:73:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3156,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3115,
                              "src": "3347:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3157,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3145,
                              "src": "3355:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3158,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3147,
                              "src": "3364:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3155,
                            "name": "verifyCallResultFromTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3254,
                            "src": "3320:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bool,bytes memory) view returns (bytes memory)"
                            }
                          },
                          "id": 3159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3320:55:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3123,
                        "id": 3160,
                        "nodeType": "Return",
                        "src": "3313:62:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3113,
                    "nodeType": "StructuredDocumentation",
                    "src": "2657:313:12",
                    "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`."
                  },
                  "id": 3162,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionCallWithValue",
                  "nameLocation": "2984:21:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3120,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3115,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3014:6:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3162,
                        "src": "3006:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3114,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3006:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3117,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3035:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3162,
                        "src": "3022:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3116,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3022:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3119,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3049:5:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3162,
                        "src": "3041:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3118,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3041:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3005:50:12"
                  },
                  "returnParameters": {
                    "id": 3123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3122,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3162,
                        "src": "3074:12:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3121,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3074:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3073:14:12"
                  },
                  "scope": 3297,
                  "src": "2975:407:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3187,
                    "nodeType": "Block",
                    "src": "3621:154:12",
                    "statements": [
                      {
                        "assignments": [
                          3173,
                          3175
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3173,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "3637:7:12",
                            "nodeType": "VariableDeclaration",
                            "scope": 3187,
                            "src": "3632:12:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3172,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3632:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3175,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "3659:10:12",
                            "nodeType": "VariableDeclaration",
                            "scope": 3187,
                            "src": "3646:23:12",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3174,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3646:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3180,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3178,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3167,
                              "src": "3691:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3176,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3165,
                              "src": "3673:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3680:10:12",
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3673:17:12",
                            "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": 3179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3673:23:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3631:65:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3182,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3165,
                              "src": "3740:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3183,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3173,
                              "src": "3748:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3184,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3175,
                              "src": "3757:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3181,
                            "name": "verifyCallResultFromTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3254,
                            "src": "3713:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bool,bytes memory) view returns (bytes memory)"
                            }
                          },
                          "id": 3185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3713:55:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3171,
                        "id": 3186,
                        "nodeType": "Return",
                        "src": "3706:62:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3163,
                    "nodeType": "StructuredDocumentation",
                    "src": "3388:128:12",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."
                  },
                  "id": 3188,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionStaticCall",
                  "nameLocation": "3530:18:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3165,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3557:6:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3188,
                        "src": "3549:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3164,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3549:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3167,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3578:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3188,
                        "src": "3565:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3166,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3565:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3548:35:12"
                  },
                  "returnParameters": {
                    "id": 3171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3170,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3188,
                        "src": "3607:12:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3169,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3607:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3606:14:12"
                  },
                  "scope": 3297,
                  "src": "3521:254:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3213,
                    "nodeType": "Block",
                    "src": "4013:156:12",
                    "statements": [
                      {
                        "assignments": [
                          3199,
                          3201
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3199,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "4029:7:12",
                            "nodeType": "VariableDeclaration",
                            "scope": 3213,
                            "src": "4024:12:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 3198,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4024:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 3201,
                            "mutability": "mutable",
                            "name": "returndata",
                            "nameLocation": "4051:10:12",
                            "nodeType": "VariableDeclaration",
                            "scope": 3213,
                            "src": "4038:23:12",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3200,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4038:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3206,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3204,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3193,
                              "src": "4085:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 3202,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3191,
                              "src": "4065:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 3203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "4072:12:12",
                            "memberName": "delegatecall",
                            "nodeType": "MemberAccess",
                            "src": "4065:19:12",
                            "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": 3205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4065:25:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4023:67:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3208,
                              "name": "target",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3191,
                              "src": "4134:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3209,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3199,
                              "src": "4142:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 3210,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3201,
                              "src": "4151:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3207,
                            "name": "verifyCallResultFromTarget",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3254,
                            "src": "4107:26:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bool,bytes memory) view returns (bytes memory)"
                            }
                          },
                          "id": 3211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4107:55:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3197,
                        "id": 3212,
                        "nodeType": "Return",
                        "src": "4100:62:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3189,
                    "nodeType": "StructuredDocumentation",
                    "src": "3781:130:12",
                    "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."
                  },
                  "id": 3214,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "functionDelegateCall",
                  "nameLocation": "3925:20:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3191,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "3954:6:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3214,
                        "src": "3946:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3190,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3946:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3193,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3975:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3214,
                        "src": "3962:17:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3192,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3962:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3945:35:12"
                  },
                  "returnParameters": {
                    "id": 3197,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3196,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3214,
                        "src": "3999:12:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3195,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3999:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3998:14:12"
                  },
                  "scope": 3297,
                  "src": "3916:253:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3253,
                    "nodeType": "Block",
                    "src": "4595:424:12",
                    "statements": [
                      {
                        "condition": {
                          "id": 3227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4609:8:12",
                          "subExpression": {
                            "id": 3226,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3219,
                            "src": "4610:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3251,
                          "nodeType": "Block",
                          "src": "4669:344:12",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 3242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3236,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 3233,
                                      "name": "returndata",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3221,
                                      "src": "4857:10:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 3234,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4868:6:12",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "4857:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 3235,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4878:1:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "4857:22:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3241,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 3237,
                                        "name": "target",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3217,
                                        "src": "4883:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 3238,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "4890:4:12",
                                      "memberName": "code",
                                      "nodeType": "MemberAccess",
                                      "src": "4883:11:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 3239,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "4895:6:12",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "4883:18:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 3240,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4905:1:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "4883:23:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "4857:49:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3248,
                              "nodeType": "IfStatement",
                              "src": "4853:119:12",
                              "trueBody": {
                                "id": 3247,
                                "nodeType": "Block",
                                "src": "4908:64:12",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 3244,
                                          "name": "target",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3217,
                                          "src": "4950:6:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 3243,
                                        "name": "AddressEmptyCode",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3047,
                                        "src": "4933:16:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$",
                                          "typeString": "function (address) pure returns (error)"
                                        }
                                      },
                                      "id": 3245,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4933:24:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 3246,
                                    "nodeType": "RevertStatement",
                                    "src": "4926:31:12"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 3249,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3221,
                                "src": "4992:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 3225,
                              "id": 3250,
                              "nodeType": "Return",
                              "src": "4985:17:12"
                            }
                          ]
                        },
                        "id": 3252,
                        "nodeType": "IfStatement",
                        "src": "4605:408:12",
                        "trueBody": {
                          "id": 3232,
                          "nodeType": "Block",
                          "src": "4619:44:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3229,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3221,
                                    "src": "4641:10:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3228,
                                  "name": "_revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3296,
                                  "src": "4633:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory) pure"
                                  }
                                },
                                "id": 3230,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4633:19:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3231,
                              "nodeType": "ExpressionStatement",
                              "src": "4633:19:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3215,
                    "nodeType": "StructuredDocumentation",
                    "src": "4175:257:12",
                    "text": " @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n of an unsuccessful call."
                  },
                  "id": 3254,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResultFromTarget",
                  "nameLocation": "4446:26:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3217,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "4490:6:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3254,
                        "src": "4482:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3216,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4482:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3219,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "4511:7:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3254,
                        "src": "4506:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3218,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4506:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3221,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "4541:10:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3254,
                        "src": "4528:23:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3220,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4528:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4472:85:12"
                  },
                  "returnParameters": {
                    "id": 3225,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3224,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3254,
                        "src": "4581:12:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3223,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4581:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4580:14:12"
                  },
                  "scope": 3297,
                  "src": "4437:582:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3275,
                    "nodeType": "Block",
                    "src": "5323:122:12",
                    "statements": [
                      {
                        "condition": {
                          "id": 3265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5337:8:12",
                          "subExpression": {
                            "id": 3264,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3257,
                            "src": "5338:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3273,
                          "nodeType": "Block",
                          "src": "5397:42:12",
                          "statements": [
                            {
                              "expression": {
                                "id": 3271,
                                "name": "returndata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3259,
                                "src": "5418:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "functionReturnParameters": 3263,
                              "id": 3272,
                              "nodeType": "Return",
                              "src": "5411:17:12"
                            }
                          ]
                        },
                        "id": 3274,
                        "nodeType": "IfStatement",
                        "src": "5333:106:12",
                        "trueBody": {
                          "id": 3270,
                          "nodeType": "Block",
                          "src": "5347:44:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3267,
                                    "name": "returndata",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3259,
                                    "src": "5369:10:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3266,
                                  "name": "_revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3296,
                                  "src": "5361:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory) pure"
                                  }
                                },
                                "id": 3268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5361:19:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3269,
                              "nodeType": "ExpressionStatement",
                              "src": "5361:19:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3255,
                    "nodeType": "StructuredDocumentation",
                    "src": "5025:191:12",
                    "text": " @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {Errors.FailedCall} error."
                  },
                  "id": 3276,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "verifyCallResult",
                  "nameLocation": "5230:16:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3257,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "5252:7:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3276,
                        "src": "5247:12:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3256,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5247:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3259,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "5274:10:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3276,
                        "src": "5261:23:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3258,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5261:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5246:39:12"
                  },
                  "returnParameters": {
                    "id": 3263,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3262,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3276,
                        "src": "5309:12:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3261,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5309:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5308:14:12"
                  },
                  "scope": 3297,
                  "src": "5221:224:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3295,
                    "nodeType": "Block",
                    "src": "5614:379:12",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 3282,
                              "name": "returndata",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3279,
                              "src": "5690:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5701:6:12",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5690:17:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5710:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5690:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3293,
                          "nodeType": "Block",
                          "src": "5936:51:12",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 3288,
                                    "name": "Errors",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3550,
                                    "src": "5957:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Errors_$3550_$",
                                      "typeString": "type(library Errors)"
                                    }
                                  },
                                  "id": 3290,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "5964:10:12",
                                  "memberName": "FailedCall",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3541,
                                  "src": "5957:17:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 3291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5957:19:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 3292,
                              "nodeType": "RevertStatement",
                              "src": "5950:26:12"
                            }
                          ]
                        },
                        "id": 3294,
                        "nodeType": "IfStatement",
                        "src": "5686:301:12",
                        "trueBody": {
                          "id": 3287,
                          "nodeType": "Block",
                          "src": "5713:217:12",
                          "statements": [
                            {
                              "AST": {
                                "nativeSrc": "5840:80:12",
                                "nodeType": "YulBlock",
                                "src": "5840:80:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "returndata",
                                              "nativeSrc": "5869:10:12",
                                              "nodeType": "YulIdentifier",
                                              "src": "5869:10:12"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "5881:4:12",
                                              "nodeType": "YulLiteral",
                                              "src": "5881:4:12",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "5865:3:12",
                                            "nodeType": "YulIdentifier",
                                            "src": "5865:3:12"
                                          },
                                          "nativeSrc": "5865:21:12",
                                          "nodeType": "YulFunctionCall",
                                          "src": "5865:21:12"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "returndata",
                                              "nativeSrc": "5894:10:12",
                                              "nodeType": "YulIdentifier",
                                              "src": "5894:10:12"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "5888:5:12",
                                            "nodeType": "YulIdentifier",
                                            "src": "5888:5:12"
                                          },
                                          "nativeSrc": "5888:17:12",
                                          "nodeType": "YulFunctionCall",
                                          "src": "5888:17:12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nativeSrc": "5858:6:12",
                                        "nodeType": "YulIdentifier",
                                        "src": "5858:6:12"
                                      },
                                      "nativeSrc": "5858:48:12",
                                      "nodeType": "YulFunctionCall",
                                      "src": "5858:48:12"
                                    },
                                    "nativeSrc": "5858:48:12",
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5858:48:12"
                                  }
                                ]
                              },
                              "evmVersion": "cancun",
                              "externalReferences": [
                                {
                                  "declaration": 3279,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5869:10:12",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3279,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5894:10:12",
                                  "valueSize": 1
                                }
                              ],
                              "flags": [
                                "memory-safe"
                              ],
                              "id": 3286,
                              "nodeType": "InlineAssembly",
                              "src": "5815:105:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3277,
                    "nodeType": "StructuredDocumentation",
                    "src": "5451:103:12",
                    "text": " @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}."
                  },
                  "id": 3296,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_revert",
                  "nameLocation": "5568:7:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3279,
                        "mutability": "mutable",
                        "name": "returndata",
                        "nameLocation": "5589:10:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 3296,
                        "src": "5576:23:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3278,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5576:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5575:25:12"
                  },
                  "returnParameters": {
                    "id": 3281,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5614:0:12"
                  },
                  "scope": 3297,
                  "src": "5559:434:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 3298,
              "src": "233:5762:12",
              "usedErrors": [
                3047
              ],
              "usedEvents": []
            }
          ],
          "src": "101:5895:12"
        },
        "id": 12
      },
      "@openzeppelin/contracts/utils/Bytes.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Bytes.sol",
          "exportedSymbols": {
            "Bytes": [
              3528
            ],
            "Math": [
              7931
            ]
          },
          "id": 3529,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3299,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:24:13"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
              "file": "./math/Math.sol",
              "id": 3301,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3529,
              "sourceUnit": 7932,
              "src": "125:37:13",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3300,
                    "name": "Math",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7931,
                    "src": "133:4:13",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Bytes",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3302,
                "nodeType": "StructuredDocumentation",
                "src": "164:33:13",
                "text": " @dev Bytes operations."
              },
              "fullyImplemented": true,
              "id": 3528,
              "linearizedBaseContracts": [
                3528
              ],
              "name": "Bytes",
              "nameLocation": "206:5:13",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3318,
                    "nodeType": "Block",
                    "src": "687:45:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3313,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3305,
                              "src": "712:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3314,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3307,
                              "src": "720:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 3315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "723:1:13",
                              "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_bytes1",
                                "typeString": "bytes1"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3312,
                            "name": "indexOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3319,
                              3368
                            ],
                            "referencedDeclaration": 3368,
                            "src": "704:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes1_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory,bytes1,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "704:21:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3311,
                        "id": 3317,
                        "nodeType": "Return",
                        "src": "697:28:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3303,
                    "nodeType": "StructuredDocumentation",
                    "src": "218:384:13",
                    "text": " @dev Forward search for `s` in `buffer`\n * If `s` is present in the buffer, returns the index of the first instance\n * If `s` is not present in the buffer, returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]"
                  },
                  "id": 3319,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "indexOf",
                  "nameLocation": "616:7:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3308,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3305,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "637:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3319,
                        "src": "624:19:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3304,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "624:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3307,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "652:1:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3319,
                        "src": "645:8:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 3306,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "645:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "623:31:13"
                  },
                  "returnParameters": {
                    "id": 3311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3310,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3319,
                        "src": "678:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "678:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "677:9:13"
                  },
                  "scope": 3528,
                  "src": "607:125:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3367,
                    "nodeType": "Block",
                    "src": "1286:246:13",
                    "statements": [
                      {
                        "assignments": [
                          3332
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3332,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "1304:6:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 3367,
                            "src": "1296:14:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3331,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1296:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3335,
                        "initialValue": {
                          "expression": {
                            "id": 3333,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3322,
                            "src": "1313:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1320:6:13",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1313:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1296:30:13"
                      },
                      {
                        "body": {
                          "id": 3359,
                          "nodeType": "Block",
                          "src": "1375:117:13",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 3354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 3349,
                                          "name": "buffer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3322,
                                          "src": "1423:6:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "id": 3350,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3337,
                                          "src": "1431:1:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 3348,
                                        "name": "_unsafeReadBytesOffset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3527,
                                        "src": "1400:22:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 3351,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1400:33:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "id": 3347,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1393:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 3346,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1393:6:13",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3352,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1393:41:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 3353,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3324,
                                  "src": "1438:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "1393:46:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3358,
                              "nodeType": "IfStatement",
                              "src": "1389:93:13",
                              "trueBody": {
                                "id": 3357,
                                "nodeType": "Block",
                                "src": "1441:41:13",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 3355,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3337,
                                      "src": "1466:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "functionReturnParameters": 3330,
                                    "id": 3356,
                                    "nodeType": "Return",
                                    "src": "1459:8:13"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3340,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3337,
                            "src": "1358:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 3341,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3332,
                            "src": "1362:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1358:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3360,
                        "initializationExpression": {
                          "assignments": [
                            3337
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3337,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1349:1:13",
                              "nodeType": "VariableDeclaration",
                              "scope": 3360,
                              "src": "1341:9:13",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3336,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1341:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3339,
                          "initialValue": {
                            "id": 3338,
                            "name": "pos",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3326,
                            "src": "1353:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1341:15:13"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 3344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "1370:3:13",
                            "subExpression": {
                              "id": 3343,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3337,
                              "src": "1372:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3345,
                          "nodeType": "ExpressionStatement",
                          "src": "1370:3:13"
                        },
                        "nodeType": "ForStatement",
                        "src": "1336:156:13"
                      },
                      {
                        "expression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 3363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1513:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 3362,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1513:7:13",
                                  "typeDescriptions": {}
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "id": 3361,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "1508:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 3364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1508:13:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_uint256",
                              "typeString": "type(uint256)"
                            }
                          },
                          "id": 3365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1522:3:13",
                          "memberName": "max",
                          "nodeType": "MemberAccess",
                          "src": "1508:17:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3330,
                        "id": 3366,
                        "nodeType": "Return",
                        "src": "1501:24:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3320,
                    "nodeType": "StructuredDocumentation",
                    "src": "738:450:13",
                    "text": " @dev Forward search for `s` in `buffer` starting at position `pos`\n * If `s` is present in the buffer (at or after `pos`), returns the index of the next instance\n * If `s` is not present in the buffer (at or after `pos`), returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf[Javascript's `Array.indexOf`]"
                  },
                  "id": 3368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "indexOf",
                  "nameLocation": "1202:7:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3322,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "1223:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3368,
                        "src": "1210:19:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3321,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1210:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3324,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "1238:1:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3368,
                        "src": "1231:8:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 3323,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "1231:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3326,
                        "mutability": "mutable",
                        "name": "pos",
                        "nameLocation": "1249:3:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3368,
                        "src": "1241:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3325,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1241:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1209:44:13"
                  },
                  "returnParameters": {
                    "id": 3330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3329,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3368,
                        "src": "1277:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3328,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1277:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1276:9:13"
                  },
                  "scope": 3528,
                  "src": "1193:339:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3388,
                    "nodeType": "Block",
                    "src": "2019:65:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3379,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3371,
                              "src": "2048:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3380,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3373,
                              "src": "2056:1:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3383,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2064:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 3382,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2064:7:13",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 3381,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2059:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2059:13:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 3385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2073:3:13",
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "2059:17:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3378,
                            "name": "lastIndexOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3389,
                              3451
                            ],
                            "referencedDeclaration": 3451,
                            "src": "2036:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes1_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory,bytes1,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2036:41:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3377,
                        "id": 3387,
                        "nodeType": "Return",
                        "src": "2029:48:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3369,
                    "nodeType": "StructuredDocumentation",
                    "src": "1538:392:13",
                    "text": " @dev Backward search for `s` in `buffer`\n * If `s` is present in the buffer, returns the index of the last instance\n * If `s` is not present in the buffer, returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]"
                  },
                  "id": 3389,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lastIndexOf",
                  "nameLocation": "1944:11:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3374,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3371,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "1969:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3389,
                        "src": "1956:19:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3370,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1956:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3373,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "1984:1:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3389,
                        "src": "1977:8:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 3372,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "1977:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1955:31:13"
                  },
                  "returnParameters": {
                    "id": 3377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3376,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3389,
                        "src": "2010:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3375,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2010:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2009:9:13"
                  },
                  "scope": 3528,
                  "src": "1935:149:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3450,
                    "nodeType": "Block",
                    "src": "2657:348:13",
                    "statements": [
                      {
                        "id": 3449,
                        "nodeType": "UncheckedBlock",
                        "src": "2667:332:13",
                        "statements": [
                          {
                            "assignments": [
                              3402
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3402,
                                "mutability": "mutable",
                                "name": "length",
                                "nameLocation": "2699:6:13",
                                "nodeType": "VariableDeclaration",
                                "scope": 3449,
                                "src": "2691:14:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3401,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2691:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3405,
                            "initialValue": {
                              "expression": {
                                "id": 3403,
                                "name": "buffer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3392,
                                "src": "2708:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "2715:6:13",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2708:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2691:30:13"
                          },
                          {
                            "body": {
                              "id": 3441,
                              "nodeType": "Block",
                              "src": "2810:141:13",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 3434,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 3427,
                                              "name": "buffer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3392,
                                              "src": "2862:6:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3430,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3428,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3407,
                                                "src": "2870:1:13",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "hexValue": "31",
                                                "id": 3429,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2874:1:13",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "2870:5:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 3426,
                                            "name": "_unsafeReadBytesOffset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3527,
                                            "src": "2839:22:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 3431,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2839:37:13",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 3425,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2832:6:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 3424,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2832:6:13",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3432,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2832:45:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 3433,
                                      "name": "s",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3394,
                                      "src": "2881:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "2832:50:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 3440,
                                  "nodeType": "IfStatement",
                                  "src": "2828:109:13",
                                  "trueBody": {
                                    "id": 3439,
                                    "nodeType": "Block",
                                    "src": "2884:53:13",
                                    "statements": [
                                      {
                                        "expression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3437,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3435,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3407,
                                            "src": "2913:1:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "hexValue": "31",
                                            "id": 3436,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2917:1:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "2913:5:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "functionReturnParameters": 3400,
                                        "id": 3438,
                                        "nodeType": "Return",
                                        "src": "2906:12:13"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3418,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3407,
                                "src": "2798:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2802:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2798:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3442,
                            "initializationExpression": {
                              "assignments": [
                                3407
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3407,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "2748:1:13",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3442,
                                  "src": "2740:9:13",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3406,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2740:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3417,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3412,
                                        "name": "pos",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3396,
                                        "src": "2780:3:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "hexValue": "31",
                                        "id": 3413,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2785:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3410,
                                        "name": "Math",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7931,
                                        "src": "2761:4:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Math_$7931_$",
                                          "typeString": "type(library Math)"
                                        }
                                      },
                                      "id": 3411,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "2766:13:13",
                                      "memberName": "saturatingAdd",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6522,
                                      "src": "2761:18:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 3414,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2761:26:13",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3415,
                                    "name": "length",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3402,
                                    "src": "2789:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3408,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7931,
                                    "src": "2752:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$7931_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 3409,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2757:3:13",
                                  "memberName": "min",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6637,
                                  "src": "2752:8:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2752:44:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2740:56:13"
                            },
                            "isSimpleCounterLoop": false,
                            "loopExpression": {
                              "expression": {
                                "id": 3422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": true,
                                "src": "2805:3:13",
                                "subExpression": {
                                  "id": 3421,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3407,
                                  "src": "2807:1:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3423,
                              "nodeType": "ExpressionStatement",
                              "src": "2805:3:13"
                            },
                            "nodeType": "ForStatement",
                            "src": "2735:216:13"
                          },
                          {
                            "expression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3445,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2976:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 3444,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2976:7:13",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 3443,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "2971:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3446,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2971:13:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 3447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2985:3:13",
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "2971:17:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3400,
                            "id": 3448,
                            "nodeType": "Return",
                            "src": "2964:24:13"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3390,
                    "nodeType": "StructuredDocumentation",
                    "src": "2090:465:13",
                    "text": " @dev Backward search for `s` in `buffer` starting at position `pos`\n * If `s` is present in the buffer (at or before `pos`), returns the index of the previous instance\n * If `s` is not present in the buffer (at or before `pos`), returns type(uint256).max\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf[Javascript's `Array.lastIndexOf`]"
                  },
                  "id": 3451,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "lastIndexOf",
                  "nameLocation": "2569:11:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3392,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "2594:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3451,
                        "src": "2581:19:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3391,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2581:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3394,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "2609:1:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3451,
                        "src": "2602:8:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 3393,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "2602:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3396,
                        "mutability": "mutable",
                        "name": "pos",
                        "nameLocation": "2620:3:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3451,
                        "src": "2612:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3395,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2612:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2580:44:13"
                  },
                  "returnParameters": {
                    "id": 3400,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3399,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3451,
                        "src": "2648:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3398,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2648:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2647:9:13"
                  },
                  "scope": 3528,
                  "src": "2560:445:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3468,
                    "nodeType": "Block",
                    "src": "3416:59:13",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3462,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3454,
                              "src": "3439:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 3463,
                              "name": "start",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3456,
                              "src": "3447:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 3464,
                                "name": "buffer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3454,
                                "src": "3454:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 3465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3461:6:13",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3454:13:13",
                              "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": 3461,
                            "name": "slice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3469,
                              3515
                            ],
                            "referencedDeclaration": 3515,
                            "src": "3433:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                            }
                          },
                          "id": 3466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3433:35:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3460,
                        "id": 3467,
                        "nodeType": "Return",
                        "src": "3426:42:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3452,
                    "nodeType": "StructuredDocumentation",
                    "src": "3011:312:13",
                    "text": " @dev Copies the content of `buffer`, from `start` (included) to the end of `buffer` into a new bytes object in\n memory.\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]"
                  },
                  "id": 3469,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "slice",
                  "nameLocation": "3337:5:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3457,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3454,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "3356:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3469,
                        "src": "3343:19:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3453,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3343:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3456,
                        "mutability": "mutable",
                        "name": "start",
                        "nameLocation": "3372:5:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3469,
                        "src": "3364:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3455,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3364:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3342:36:13"
                  },
                  "returnParameters": {
                    "id": 3460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3459,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3469,
                        "src": "3402:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3458,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3402:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3401:14:13"
                  },
                  "scope": 3528,
                  "src": "3328:147:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3514,
                    "nodeType": "Block",
                    "src": "3896:380:13",
                    "statements": [
                      {
                        "assignments": [
                          3482
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3482,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "3934:6:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 3514,
                            "src": "3926:14:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3481,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3926:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3485,
                        "initialValue": {
                          "expression": {
                            "id": 3483,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3472,
                            "src": "3943:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 3484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3950:6:13",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3943:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3926:30:13"
                      },
                      {
                        "expression": {
                          "id": 3492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3486,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3476,
                            "src": "3966:3:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3489,
                                "name": "end",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "3981:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3490,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3482,
                                "src": "3986:6:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3487,
                                "name": "Math",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7931,
                                "src": "3972:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Math_$7931_$",
                                  "typeString": "type(library Math)"
                                }
                              },
                              "id": 3488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3977:3:13",
                              "memberName": "min",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6637,
                              "src": "3972:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3972:21:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3966:27:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3493,
                        "nodeType": "ExpressionStatement",
                        "src": "3966:27:13"
                      },
                      {
                        "expression": {
                          "id": 3500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3494,
                            "name": "start",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3474,
                            "src": "4003:5:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3497,
                                "name": "start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3474,
                                "src": "4020:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3498,
                                "name": "end",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "4027:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3495,
                                "name": "Math",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7931,
                                "src": "4011:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Math_$7931_$",
                                  "typeString": "type(library Math)"
                                }
                              },
                              "id": 3496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4016:3:13",
                              "memberName": "min",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6637,
                              "src": "4011:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4011:20:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4003:28:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3501,
                        "nodeType": "ExpressionStatement",
                        "src": "4003:28:13"
                      },
                      {
                        "assignments": [
                          3503
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3503,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "4084:6:13",
                            "nodeType": "VariableDeclaration",
                            "scope": 3514,
                            "src": "4071:19:13",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3502,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4071:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3510,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3506,
                                "name": "end",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3476,
                                "src": "4103:3:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 3507,
                                "name": "start",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3474,
                                "src": "4109:5:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4103:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4093:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 3504,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4097:5:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 3509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4093:22:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4071:44:13"
                      },
                      {
                        "AST": {
                          "nativeSrc": "4150:96:13",
                          "nodeType": "YulBlock",
                          "src": "4150:96:13",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "4174:6:13",
                                        "nodeType": "YulIdentifier",
                                        "src": "4174:6:13"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4182:4:13",
                                        "nodeType": "YulLiteral",
                                        "src": "4182:4:13",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4170:3:13",
                                      "nodeType": "YulIdentifier",
                                      "src": "4170:3:13"
                                    },
                                    "nativeSrc": "4170:17:13",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4170:17:13"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "buffer",
                                            "nativeSrc": "4197:6:13",
                                            "nodeType": "YulIdentifier",
                                            "src": "4197:6:13"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "4205:4:13",
                                            "nodeType": "YulLiteral",
                                            "src": "4205:4:13",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "4193:3:13",
                                          "nodeType": "YulIdentifier",
                                          "src": "4193:3:13"
                                        },
                                        "nativeSrc": "4193:17:13",
                                        "nodeType": "YulFunctionCall",
                                        "src": "4193:17:13"
                                      },
                                      {
                                        "name": "start",
                                        "nativeSrc": "4212:5:13",
                                        "nodeType": "YulIdentifier",
                                        "src": "4212:5:13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4189:3:13",
                                      "nodeType": "YulIdentifier",
                                      "src": "4189:3:13"
                                    },
                                    "nativeSrc": "4189:29:13",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4189:29:13"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nativeSrc": "4224:3:13",
                                        "nodeType": "YulIdentifier",
                                        "src": "4224:3:13"
                                      },
                                      {
                                        "name": "start",
                                        "nativeSrc": "4229:5:13",
                                        "nodeType": "YulIdentifier",
                                        "src": "4229:5:13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "4220:3:13",
                                      "nodeType": "YulIdentifier",
                                      "src": "4220:3:13"
                                    },
                                    "nativeSrc": "4220:15:13",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4220:15:13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mcopy",
                                  "nativeSrc": "4164:5:13",
                                  "nodeType": "YulIdentifier",
                                  "src": "4164:5:13"
                                },
                                "nativeSrc": "4164:72:13",
                                "nodeType": "YulFunctionCall",
                                "src": "4164:72:13"
                              },
                              "nativeSrc": "4164:72:13",
                              "nodeType": "YulExpressionStatement",
                              "src": "4164:72:13"
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3472,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4197:6:13",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3476,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4224:3:13",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3503,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4174:6:13",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3474,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4212:5:13",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3474,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4229:5:13",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3511,
                        "nodeType": "InlineAssembly",
                        "src": "4125:121:13"
                      },
                      {
                        "expression": {
                          "id": 3512,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3503,
                          "src": "4263:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 3480,
                        "id": 3513,
                        "nodeType": "Return",
                        "src": "4256:13:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3470,
                    "nodeType": "StructuredDocumentation",
                    "src": "3481:309:13",
                    "text": " @dev Copies the content of `buffer`, from `start` (included) to `end` (excluded) into a new bytes object in\n memory.\n NOTE: replicates the behavior of https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice[Javascript's `Array.slice`]"
                  },
                  "id": 3515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "slice",
                  "nameLocation": "3804:5:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3472,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "3823:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3515,
                        "src": "3810:19:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3471,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3810:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3474,
                        "mutability": "mutable",
                        "name": "start",
                        "nameLocation": "3839:5:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3515,
                        "src": "3831:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3473,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3831:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3476,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "3854:3:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3515,
                        "src": "3846:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3475,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3846:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3809:49:13"
                  },
                  "returnParameters": {
                    "id": 3480,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3479,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3515,
                        "src": "3882:12:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3478,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3882:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3881:14:13"
                  },
                  "scope": 3528,
                  "src": "3795:481:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3526,
                    "nodeType": "Block",
                    "src": "4661:225:13",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "4810:70:13",
                          "nodeType": "YulBlock",
                          "src": "4810:70:13",
                          "statements": [
                            {
                              "nativeSrc": "4824:46:13",
                              "nodeType": "YulAssignment",
                              "src": "4824:46:13",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "buffer",
                                            "nativeSrc": "4847:6:13",
                                            "nodeType": "YulIdentifier",
                                            "src": "4847:6:13"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "4855:4:13",
                                            "nodeType": "YulLiteral",
                                            "src": "4855:4:13",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "4843:3:13",
                                          "nodeType": "YulIdentifier",
                                          "src": "4843:3:13"
                                        },
                                        "nativeSrc": "4843:17:13",
                                        "nodeType": "YulFunctionCall",
                                        "src": "4843:17:13"
                                      },
                                      {
                                        "name": "offset",
                                        "nativeSrc": "4862:6:13",
                                        "nodeType": "YulIdentifier",
                                        "src": "4862:6:13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4839:3:13",
                                      "nodeType": "YulIdentifier",
                                      "src": "4839:3:13"
                                    },
                                    "nativeSrc": "4839:30:13",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4839:30:13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "4833:5:13",
                                  "nodeType": "YulIdentifier",
                                  "src": "4833:5:13"
                                },
                                "nativeSrc": "4833:37:13",
                                "nodeType": "YulFunctionCall",
                                "src": "4833:37:13"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nativeSrc": "4824:5:13",
                                  "nodeType": "YulIdentifier",
                                  "src": "4824:5:13"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3518,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4847:6:13",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3520,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4862:6:13",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3523,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4824:5:13",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3525,
                        "nodeType": "InlineAssembly",
                        "src": "4785:95:13"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3516,
                    "nodeType": "StructuredDocumentation",
                    "src": "4282:268:13",
                    "text": " @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."
                  },
                  "id": 3527,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_unsafeReadBytesOffset",
                  "nameLocation": "4564:22:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3521,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3518,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "4600:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3527,
                        "src": "4587:19:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3517,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4587:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3520,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "4616:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3527,
                        "src": "4608:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3519,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4608:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4586:37:13"
                  },
                  "returnParameters": {
                    "id": 3524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3523,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4654:5:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 3527,
                        "src": "4646:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3522,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4646:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4645:15:13"
                  },
                  "scope": 3528,
                  "src": "4555:331:13",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 3529,
              "src": "198:4690:13",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "99:4790:13"
        },
        "id": 13
      },
      "@openzeppelin/contracts/utils/Errors.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Errors.sol",
          "exportedSymbols": {
            "Errors": [
              3550
            ]
          },
          "id": 3551,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3530,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "100:24:14"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Errors",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3531,
                "nodeType": "StructuredDocumentation",
                "src": "126:284:14",
                "text": " @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._"
              },
              "fullyImplemented": true,
              "id": 3550,
              "linearizedBaseContracts": [
                3550
              ],
              "name": "Errors",
              "nameLocation": "419:6:14",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3532,
                    "nodeType": "StructuredDocumentation",
                    "src": "432:94:14",
                    "text": " @dev The ETH balance of the account is not enough to perform the operation."
                  },
                  "errorSelector": "cf479181",
                  "id": 3538,
                  "name": "InsufficientBalance",
                  "nameLocation": "537:19:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3534,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "565:7:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3538,
                        "src": "557:15:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3533,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "557:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3536,
                        "mutability": "mutable",
                        "name": "needed",
                        "nameLocation": "582:6:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 3538,
                        "src": "574:14:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3535,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "574:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "556:33:14"
                  },
                  "src": "531:59:14"
                },
                {
                  "documentation": {
                    "id": 3539,
                    "nodeType": "StructuredDocumentation",
                    "src": "596:89:14",
                    "text": " @dev A call to an address target failed. The target may have reverted."
                  },
                  "errorSelector": "d6bda275",
                  "id": 3541,
                  "name": "FailedCall",
                  "nameLocation": "696:10:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3540,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "706:2:14"
                  },
                  "src": "690:19:14"
                },
                {
                  "documentation": {
                    "id": 3542,
                    "nodeType": "StructuredDocumentation",
                    "src": "715:46:14",
                    "text": " @dev The deployment failed."
                  },
                  "errorSelector": "b06ebf3d",
                  "id": 3544,
                  "name": "FailedDeployment",
                  "nameLocation": "772:16:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3543,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "788:2:14"
                  },
                  "src": "766:25:14"
                },
                {
                  "documentation": {
                    "id": 3545,
                    "nodeType": "StructuredDocumentation",
                    "src": "797:58:14",
                    "text": " @dev A necessary precompile is missing."
                  },
                  "errorSelector": "42b01bce",
                  "id": 3549,
                  "name": "MissingPrecompile",
                  "nameLocation": "866:17:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3547,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3549,
                        "src": "884:7:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3546,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "884:7:14",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "883:9:14"
                  },
                  "src": "860:33:14"
                }
              ],
              "scope": 3551,
              "src": "411:484:14",
              "usedErrors": [
                3538,
                3541,
                3544,
                3549
              ],
              "usedEvents": []
            }
          ],
          "src": "100:796:14"
        },
        "id": 14
      },
      "@openzeppelin/contracts/utils/Panic.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Panic.sol",
          "exportedSymbols": {
            "Panic": [
              3602
            ]
          },
          "id": 3603,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3552,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "99:24:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Panic",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3553,
                "nodeType": "StructuredDocumentation",
                "src": "125:489:15",
                "text": " @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n      using Panic for uint256;\n      // Use any of the declared internal constants\n      function foo() { Panic.GENERIC.panic(); }\n      // Alternatively\n      function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"
              },
              "fullyImplemented": true,
              "id": 3602,
              "linearizedBaseContracts": [
                3602
              ],
              "name": "Panic",
              "nameLocation": "665:5:15",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "documentation": {
                    "id": 3554,
                    "nodeType": "StructuredDocumentation",
                    "src": "677:36:15",
                    "text": "@dev generic / unspecified error"
                  },
                  "id": 3557,
                  "mutability": "constant",
                  "name": "GENERIC",
                  "nameLocation": "744:7:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "718:40:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3555,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783030",
                    "id": 3556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "754:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0x00"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3558,
                    "nodeType": "StructuredDocumentation",
                    "src": "764:37:15",
                    "text": "@dev used by the assert() builtin"
                  },
                  "id": 3561,
                  "mutability": "constant",
                  "name": "ASSERT",
                  "nameLocation": "832:6:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "806:39:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3559,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "806:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783031",
                    "id": 3560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "841:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "0x01"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3562,
                    "nodeType": "StructuredDocumentation",
                    "src": "851:41:15",
                    "text": "@dev arithmetic underflow or overflow"
                  },
                  "id": 3565,
                  "mutability": "constant",
                  "name": "UNDER_OVERFLOW",
                  "nameLocation": "923:14:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "897:47:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3563,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "897:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783131",
                    "id": 3564,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "940:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_17_by_1",
                      "typeString": "int_const 17"
                    },
                    "value": "0x11"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3566,
                    "nodeType": "StructuredDocumentation",
                    "src": "950:35:15",
                    "text": "@dev division or modulo by zero"
                  },
                  "id": 3569,
                  "mutability": "constant",
                  "name": "DIVISION_BY_ZERO",
                  "nameLocation": "1016:16:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "990:49:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3567,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "990:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783132",
                    "id": 3568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1035:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "0x12"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3570,
                    "nodeType": "StructuredDocumentation",
                    "src": "1045:30:15",
                    "text": "@dev enum conversion error"
                  },
                  "id": 3573,
                  "mutability": "constant",
                  "name": "ENUM_CONVERSION_ERROR",
                  "nameLocation": "1106:21:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "1080:54:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1080:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783231",
                    "id": 3572,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1130:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_33_by_1",
                      "typeString": "int_const 33"
                    },
                    "value": "0x21"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3574,
                    "nodeType": "StructuredDocumentation",
                    "src": "1140:36:15",
                    "text": "@dev invalid encoding in storage"
                  },
                  "id": 3577,
                  "mutability": "constant",
                  "name": "STORAGE_ENCODING_ERROR",
                  "nameLocation": "1207:22:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "1181:55:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3575,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1181:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783232",
                    "id": 3576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1232:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_34_by_1",
                      "typeString": "int_const 34"
                    },
                    "value": "0x22"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3578,
                    "nodeType": "StructuredDocumentation",
                    "src": "1242:24:15",
                    "text": "@dev empty array pop"
                  },
                  "id": 3581,
                  "mutability": "constant",
                  "name": "EMPTY_ARRAY_POP",
                  "nameLocation": "1297:15:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "1271:48:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3579,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1271:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783331",
                    "id": 3580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1315:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_49_by_1",
                      "typeString": "int_const 49"
                    },
                    "value": "0x31"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3582,
                    "nodeType": "StructuredDocumentation",
                    "src": "1325:35:15",
                    "text": "@dev array out of bounds access"
                  },
                  "id": 3585,
                  "mutability": "constant",
                  "name": "ARRAY_OUT_OF_BOUNDS",
                  "nameLocation": "1391:19:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "1365:52:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3583,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1365:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783332",
                    "id": 3584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1413:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_50_by_1",
                      "typeString": "int_const 50"
                    },
                    "value": "0x32"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3586,
                    "nodeType": "StructuredDocumentation",
                    "src": "1423:65:15",
                    "text": "@dev resource error (too large allocation or too large array)"
                  },
                  "id": 3589,
                  "mutability": "constant",
                  "name": "RESOURCE_ERROR",
                  "nameLocation": "1519:14:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "1493:47:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3587,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1493:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783431",
                    "id": 3588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1536:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_65_by_1",
                      "typeString": "int_const 65"
                    },
                    "value": "0x41"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3590,
                    "nodeType": "StructuredDocumentation",
                    "src": "1546:42:15",
                    "text": "@dev calling invalid internal function"
                  },
                  "id": 3593,
                  "mutability": "constant",
                  "name": "INVALID_INTERNAL_FUNCTION",
                  "nameLocation": "1619:25:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 3602,
                  "src": "1593:58:15",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3591,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1593:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "30783531",
                    "id": 3592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1647:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_81_by_1",
                      "typeString": "int_const 81"
                    },
                    "value": "0x51"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3600,
                    "nodeType": "Block",
                    "src": "1819:151:15",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "1854:110:15",
                          "nodeType": "YulBlock",
                          "src": "1854:110:15",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1875:4:15",
                                    "nodeType": "YulLiteral",
                                    "src": "1875:4:15",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1881:10:15",
                                    "nodeType": "YulLiteral",
                                    "src": "1881:10:15",
                                    "type": "",
                                    "value": "0x4e487b71"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "1868:6:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "1868:6:15"
                                },
                                "nativeSrc": "1868:24:15",
                                "nodeType": "YulFunctionCall",
                                "src": "1868:24:15"
                              },
                              "nativeSrc": "1868:24:15",
                              "nodeType": "YulExpressionStatement",
                              "src": "1868:24:15"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1912:4:15",
                                    "nodeType": "YulLiteral",
                                    "src": "1912:4:15",
                                    "type": "",
                                    "value": "0x20"
                                  },
                                  {
                                    "name": "code",
                                    "nativeSrc": "1918:4:15",
                                    "nodeType": "YulIdentifier",
                                    "src": "1918:4:15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "1905:6:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "1905:6:15"
                                },
                                "nativeSrc": "1905:18:15",
                                "nodeType": "YulFunctionCall",
                                "src": "1905:18:15"
                              },
                              "nativeSrc": "1905:18:15",
                              "nodeType": "YulExpressionStatement",
                              "src": "1905:18:15"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1943:4:15",
                                    "nodeType": "YulLiteral",
                                    "src": "1943:4:15",
                                    "type": "",
                                    "value": "0x1c"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1949:4:15",
                                    "nodeType": "YulLiteral",
                                    "src": "1949:4:15",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nativeSrc": "1936:6:15",
                                  "nodeType": "YulIdentifier",
                                  "src": "1936:6:15"
                                },
                                "nativeSrc": "1936:18:15",
                                "nodeType": "YulFunctionCall",
                                "src": "1936:18:15"
                              },
                              "nativeSrc": "1936:18:15",
                              "nodeType": "YulExpressionStatement",
                              "src": "1936:18:15"
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3596,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1918:4:15",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3599,
                        "nodeType": "InlineAssembly",
                        "src": "1829:135:15"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3594,
                    "nodeType": "StructuredDocumentation",
                    "src": "1658:113:15",
                    "text": "@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."
                  },
                  "id": 3601,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "panic",
                  "nameLocation": "1785:5:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3596,
                        "mutability": "mutable",
                        "name": "code",
                        "nameLocation": "1799:4:15",
                        "nodeType": "VariableDeclaration",
                        "scope": 3601,
                        "src": "1791:12:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1791:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1790:14:15"
                  },
                  "returnParameters": {
                    "id": 3598,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1819:0:15"
                  },
                  "scope": 3602,
                  "src": "1776:194:15",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3603,
              "src": "657:1315:15",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "99:1874:15"
        },
        "id": 15
      },
      "@openzeppelin/contracts/utils/ShortStrings.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/ShortStrings.sol",
          "exportedSymbols": {
            "ShortString": [
              3608
            ],
            "ShortStrings": [
              3819
            ],
            "StorageSlot": [
              3943
            ]
          },
          "id": 3820,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3604,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "106:24:16"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol",
              "file": "./StorageSlot.sol",
              "id": 3606,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3820,
              "sourceUnit": 3944,
              "src": "132:46:16",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3605,
                    "name": "StorageSlot",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3943,
                    "src": "140:11:16",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "canonicalName": "ShortString",
              "id": 3608,
              "name": "ShortString",
              "nameLocation": "353:11:16",
              "nodeType": "UserDefinedValueTypeDefinition",
              "src": "348:28:16",
              "underlyingType": {
                "id": 3607,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "368:7:16",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              }
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ShortStrings",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3609,
                "nodeType": "StructuredDocumentation",
                "src": "378:876:16",
                "text": " @dev This library provides functions to convert short memory strings\n into a `ShortString` type that can be used as an immutable variable.\n Strings of arbitrary length can be optimized using this library if\n they are short enough (up to 31 bytes) by packing them with their\n length (1 byte) in a single EVM word (32 bytes). Additionally, a\n fallback mechanism can be used for every other case.\n Usage example:\n ```solidity\n contract Named {\n     using ShortStrings for *;\n     ShortString private immutable _name;\n     string private _nameFallback;\n     constructor(string memory contractName) {\n         _name = contractName.toShortStringWithFallback(_nameFallback);\n     }\n     function name() external view returns (string memory) {\n         return _name.toStringWithFallback(_nameFallback);\n     }\n }\n ```"
              },
              "fullyImplemented": true,
              "id": 3819,
              "linearizedBaseContracts": [
                3819
              ],
              "name": "ShortStrings",
              "nameLocation": "1263:12:16",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 3612,
                  "mutability": "constant",
                  "name": "FALLBACK_SENTINEL",
                  "nameLocation": "1370:17:16",
                  "nodeType": "VariableDeclaration",
                  "scope": 3819,
                  "src": "1345:111:16",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3610,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1345:7:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030304646",
                    "id": 3611,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1390:66:16",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_255_by_1",
                      "typeString": "int_const 255"
                    },
                    "value": "0x00000000000000000000000000000000000000000000000000000000000000FF"
                  },
                  "visibility": "private"
                },
                {
                  "errorSelector": "305a27a9",
                  "id": 3616,
                  "name": "StringTooLong",
                  "nameLocation": "1469:13:16",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3614,
                        "mutability": "mutable",
                        "name": "str",
                        "nameLocation": "1490:3:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3616,
                        "src": "1483:10:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3613,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1483:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1482:12:16"
                  },
                  "src": "1463:32:16"
                },
                {
                  "errorSelector": "b3512b0c",
                  "id": 3618,
                  "name": "InvalidShortString",
                  "nameLocation": "1506:18:16",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3617,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1524:2:16"
                  },
                  "src": "1500:27:16"
                },
                {
                  "body": {
                    "id": 3661,
                    "nodeType": "Block",
                    "src": "1786:208:16",
                    "statements": [
                      {
                        "assignments": [
                          3628
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3628,
                            "mutability": "mutable",
                            "name": "bstr",
                            "nameLocation": "1809:4:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 3661,
                            "src": "1796:17:16",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3627,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1796:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3633,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3631,
                              "name": "str",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3621,
                              "src": "1822:3:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 3630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1816:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 3629,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1816:5:16",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1816:10:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1796:30:16"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 3634,
                              "name": "bstr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3628,
                              "src": "1840:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1845:6:16",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1840:11:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "3331",
                            "id": 3636,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1854:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            },
                            "value": "31"
                          },
                          "src": "1840:16:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3643,
                        "nodeType": "IfStatement",
                        "src": "1836:72:16",
                        "trueBody": {
                          "id": 3642,
                          "nodeType": "Block",
                          "src": "1858:50:16",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 3639,
                                    "name": "str",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3621,
                                    "src": "1893:3:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 3638,
                                  "name": "StringTooLong",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3616,
                                  "src": "1879:13:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$",
                                    "typeString": "function (string memory) pure returns (error)"
                                  }
                                },
                                "id": 3640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1879:18:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 3641,
                              "nodeType": "RevertStatement",
                              "src": "1872:25:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3657,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 3652,
                                            "name": "bstr",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3628,
                                            "src": "1965:4:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 3651,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1957:7:16",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                            "typeString": "type(bytes32)"
                                          },
                                          "typeName": {
                                            "id": 3650,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1957:7:16",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 3653,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1957:13:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 3649,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1949:7:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 3648,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1949:7:16",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3654,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1949:22:16",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "|",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 3655,
                                      "name": "bstr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3628,
                                      "src": "1974:4:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 3656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1979:6:16",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "1974:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1949:36:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 3647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1941:7:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 3646,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1941:7:16",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3658,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1941:45:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 3644,
                              "name": "ShortString",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3608,
                              "src": "1924:11:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_userDefinedValueType$_ShortString_$3608_$",
                                "typeString": "type(ShortString)"
                              }
                            },
                            "id": 3645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1936:4:16",
                            "memberName": "wrap",
                            "nodeType": "MemberAccess",
                            "src": "1924:16:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ShortString_$3608_$",
                              "typeString": "function (bytes32) pure returns (ShortString)"
                            }
                          },
                          "id": 3659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1924:63:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "functionReturnParameters": 3626,
                        "id": 3660,
                        "nodeType": "Return",
                        "src": "1917:70:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3619,
                    "nodeType": "StructuredDocumentation",
                    "src": "1533:170:16",
                    "text": " @dev Encode a string of at most 31 chars into a `ShortString`.\n This will trigger a `StringTooLong` error is the input string is too long."
                  },
                  "id": 3662,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toShortString",
                  "nameLocation": "1717:13:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3621,
                        "mutability": "mutable",
                        "name": "str",
                        "nameLocation": "1745:3:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3662,
                        "src": "1731:17:16",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3620,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1731:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1730:19:16"
                  },
                  "returnParameters": {
                    "id": 3626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3625,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3662,
                        "src": "1773:11:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                          "typeString": "ShortString"
                        },
                        "typeName": {
                          "id": 3624,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3623,
                            "name": "ShortString",
                            "nameLocations": [
                              "1773:11:16"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3608,
                            "src": "1773:11:16"
                          },
                          "referencedDeclaration": 3608,
                          "src": "1773:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1772:13:16"
                  },
                  "scope": 3819,
                  "src": "1708:286:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3687,
                    "nodeType": "Block",
                    "src": "2152:304:16",
                    "statements": [
                      {
                        "assignments": [
                          3672
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3672,
                            "mutability": "mutable",
                            "name": "len",
                            "nameLocation": "2170:3:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 3687,
                            "src": "2162:11:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3671,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2162:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3676,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3674,
                              "name": "sstr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3666,
                              "src": "2187:4:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                "typeString": "ShortString"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                "typeString": "ShortString"
                              }
                            ],
                            "id": 3673,
                            "name": "byteLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3720,
                            "src": "2176:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ShortString_$3608_$returns$_t_uint256_$",
                              "typeString": "function (ShortString) pure returns (uint256)"
                            }
                          },
                          "id": 3675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2176:16:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2162:30:16"
                      },
                      {
                        "assignments": [
                          3678
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3678,
                            "mutability": "mutable",
                            "name": "str",
                            "nameLocation": "2294:3:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 3687,
                            "src": "2280:17:16",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 3677,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2280:6:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3683,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "3332",
                              "id": 3681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2311:2:16",
                              "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"
                              }
                            ],
                            "id": 3680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2300:10:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (string memory)"
                            },
                            "typeName": {
                              "id": 3679,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "2304:6:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            }
                          },
                          "id": 3682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2300:14:16",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2280:34:16"
                      },
                      {
                        "AST": {
                          "nativeSrc": "2349:81:16",
                          "nodeType": "YulBlock",
                          "src": "2349:81:16",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "str",
                                    "nativeSrc": "2370:3:16",
                                    "nodeType": "YulIdentifier",
                                    "src": "2370:3:16"
                                  },
                                  {
                                    "name": "len",
                                    "nativeSrc": "2375:3:16",
                                    "nodeType": "YulIdentifier",
                                    "src": "2375:3:16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "2363:6:16",
                                  "nodeType": "YulIdentifier",
                                  "src": "2363:6:16"
                                },
                                "nativeSrc": "2363:16:16",
                                "nodeType": "YulFunctionCall",
                                "src": "2363:16:16"
                              },
                              "nativeSrc": "2363:16:16",
                              "nodeType": "YulExpressionStatement",
                              "src": "2363:16:16"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "str",
                                        "nativeSrc": "2403:3:16",
                                        "nodeType": "YulIdentifier",
                                        "src": "2403:3:16"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2408:4:16",
                                        "nodeType": "YulLiteral",
                                        "src": "2408:4:16",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2399:3:16",
                                      "nodeType": "YulIdentifier",
                                      "src": "2399:3:16"
                                    },
                                    "nativeSrc": "2399:14:16",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2399:14:16"
                                  },
                                  {
                                    "name": "sstr",
                                    "nativeSrc": "2415:4:16",
                                    "nodeType": "YulIdentifier",
                                    "src": "2415:4:16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "2392:6:16",
                                  "nodeType": "YulIdentifier",
                                  "src": "2392:6:16"
                                },
                                "nativeSrc": "2392:28:16",
                                "nodeType": "YulFunctionCall",
                                "src": "2392:28:16"
                              },
                              "nativeSrc": "2392:28:16",
                              "nodeType": "YulExpressionStatement",
                              "src": "2392:28:16"
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3672,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2375:3:16",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3666,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2415:4:16",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3678,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2370:3:16",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3678,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2403:3:16",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3684,
                        "nodeType": "InlineAssembly",
                        "src": "2324:106:16"
                      },
                      {
                        "expression": {
                          "id": 3685,
                          "name": "str",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3678,
                          "src": "2446:3:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 3670,
                        "id": 3686,
                        "nodeType": "Return",
                        "src": "2439:10:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3663,
                    "nodeType": "StructuredDocumentation",
                    "src": "2000:73:16",
                    "text": " @dev Decode a `ShortString` back to a \"normal\" string."
                  },
                  "id": 3688,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "2087:8:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3666,
                        "mutability": "mutable",
                        "name": "sstr",
                        "nameLocation": "2108:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3688,
                        "src": "2096:16:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                          "typeString": "ShortString"
                        },
                        "typeName": {
                          "id": 3665,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3664,
                            "name": "ShortString",
                            "nameLocations": [
                              "2096:11:16"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3608,
                            "src": "2096:11:16"
                          },
                          "referencedDeclaration": 3608,
                          "src": "2096:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2095:18:16"
                  },
                  "returnParameters": {
                    "id": 3670,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3669,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3688,
                        "src": "2137:13:16",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3668,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2137:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2136:15:16"
                  },
                  "scope": 3819,
                  "src": "2078:378:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3719,
                    "nodeType": "Block",
                    "src": "2598:175:16",
                    "statements": [
                      {
                        "assignments": [
                          3698
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3698,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "2616:6:16",
                            "nodeType": "VariableDeclaration",
                            "scope": 3719,
                            "src": "2608:14:16",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3697,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2608:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3708,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3703,
                                    "name": "sstr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3692,
                                    "src": "2652:4:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                      "typeString": "ShortString"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                      "typeString": "ShortString"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3701,
                                    "name": "ShortString",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3608,
                                    "src": "2633:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_userDefinedValueType$_ShortString_$3608_$",
                                      "typeString": "type(ShortString)"
                                    }
                                  },
                                  "id": 3702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "2645:6:16",
                                  "memberName": "unwrap",
                                  "nodeType": "MemberAccess",
                                  "src": "2633:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$3608_$returns$_t_bytes32_$",
                                    "typeString": "function (ShortString) pure returns (bytes32)"
                                  }
                                },
                                "id": 3704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2633:24:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 3700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2625:7:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3699,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2625:7:16",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2625:33:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "hexValue": "30784646",
                            "id": 3706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2661:4:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_255_by_1",
                              "typeString": "int_const 255"
                            },
                            "value": "0xFF"
                          },
                          "src": "2625:40:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2608:57:16"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3709,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3698,
                            "src": "2679:6:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "3331",
                            "id": 3710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2688:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_31_by_1",
                              "typeString": "int_const 31"
                            },
                            "value": "31"
                          },
                          "src": "2679:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3716,
                        "nodeType": "IfStatement",
                        "src": "2675:69:16",
                        "trueBody": {
                          "id": 3715,
                          "nodeType": "Block",
                          "src": "2692:52:16",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3712,
                                  "name": "InvalidShortString",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3618,
                                  "src": "2713:18:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                    "typeString": "function () pure returns (error)"
                                  }
                                },
                                "id": 3713,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2713:20:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 3714,
                              "nodeType": "RevertStatement",
                              "src": "2706:27:16"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 3717,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3698,
                          "src": "2760:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3696,
                        "id": 3718,
                        "nodeType": "Return",
                        "src": "2753:13:16"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3689,
                    "nodeType": "StructuredDocumentation",
                    "src": "2462:61:16",
                    "text": " @dev Return the length of a `ShortString`."
                  },
                  "id": 3720,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "byteLength",
                  "nameLocation": "2537:10:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3692,
                        "mutability": "mutable",
                        "name": "sstr",
                        "nameLocation": "2560:4:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3720,
                        "src": "2548:16:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                          "typeString": "ShortString"
                        },
                        "typeName": {
                          "id": 3691,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3690,
                            "name": "ShortString",
                            "nameLocations": [
                              "2548:11:16"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3608,
                            "src": "2548:11:16"
                          },
                          "referencedDeclaration": 3608,
                          "src": "2548:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2547:18:16"
                  },
                  "returnParameters": {
                    "id": 3696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3695,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3720,
                        "src": "2589:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3694,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2589:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2588:9:16"
                  },
                  "scope": 3819,
                  "src": "2528:245:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3759,
                    "nodeType": "Block",
                    "src": "2996:231:16",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3733,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3723,
                                  "src": "3016:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 3732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3010:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                  "typeString": "type(bytes storage pointer)"
                                },
                                "typeName": {
                                  "id": 3731,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3010:5:16",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3010:12:16",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 3735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3023:6:16",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3010:19:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "3332",
                            "id": 3736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3032:2:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "3010:24:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3757,
                          "nodeType": "Block",
                          "src": "3094:127:16",
                          "statements": [
                            {
                              "expression": {
                                "id": 3750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 3746,
                                        "name": "store",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3725,
                                        "src": "3134:5:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_storage_ptr",
                                          "typeString": "string storage pointer"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_storage_ptr",
                                          "typeString": "string storage pointer"
                                        }
                                      ],
                                      "expression": {
                                        "id": 3743,
                                        "name": "StorageSlot",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3943,
                                        "src": "3108:11:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_StorageSlot_$3943_$",
                                          "typeString": "type(library StorageSlot)"
                                        }
                                      },
                                      "id": 3745,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "3120:13:16",
                                      "memberName": "getStringSlot",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3920,
                                      "src": "3108:25:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_string_storage_ptr_$returns$_t_struct$_StringSlot_$3840_storage_ptr_$",
                                        "typeString": "function (string storage pointer) pure returns (struct StorageSlot.StringSlot storage pointer)"
                                      }
                                    },
                                    "id": 3747,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3108:32:16",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_StringSlot_$3840_storage_ptr",
                                      "typeString": "struct StorageSlot.StringSlot storage pointer"
                                    }
                                  },
                                  "id": 3748,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberLocation": "3141:5:16",
                                  "memberName": "value",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3839,
                                  "src": "3108:38:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 3749,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3723,
                                  "src": "3149:5:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "3108:46:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              },
                              "id": 3751,
                              "nodeType": "ExpressionStatement",
                              "src": "3108:46:16"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3754,
                                    "name": "FALLBACK_SENTINEL",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3612,
                                    "src": "3192:17:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3752,
                                    "name": "ShortString",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3608,
                                    "src": "3175:11:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_userDefinedValueType$_ShortString_$3608_$",
                                      "typeString": "type(ShortString)"
                                    }
                                  },
                                  "id": 3753,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "3187:4:16",
                                  "memberName": "wrap",
                                  "nodeType": "MemberAccess",
                                  "src": "3175:16:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueType$_ShortString_$3608_$",
                                    "typeString": "function (bytes32) pure returns (ShortString)"
                                  }
                                },
                                "id": 3755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3175:35:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                  "typeString": "ShortString"
                                }
                              },
                              "functionReturnParameters": 3730,
                              "id": 3756,
                              "nodeType": "Return",
                              "src": "3168:42:16"
                            }
                          ]
                        },
                        "id": 3758,
                        "nodeType": "IfStatement",
                        "src": "3006:215:16",
                        "trueBody": {
                          "id": 3742,
                          "nodeType": "Block",
                          "src": "3036:52:16",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3739,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3723,
                                    "src": "3071:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 3738,
                                  "name": "toShortString",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3662,
                                  "src": "3057:13:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_userDefinedValueType$_ShortString_$3608_$",
                                    "typeString": "function (string memory) pure returns (ShortString)"
                                  }
                                },
                                "id": 3740,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3057:20:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                  "typeString": "ShortString"
                                }
                              },
                              "functionReturnParameters": 3730,
                              "id": 3741,
                              "nodeType": "Return",
                              "src": "3050:27:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3721,
                    "nodeType": "StructuredDocumentation",
                    "src": "2779:103:16",
                    "text": " @dev Encode a string into a `ShortString`, or write it to storage if it is too long."
                  },
                  "id": 3760,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toShortStringWithFallback",
                  "nameLocation": "2896:25:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3726,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3723,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2936:5:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3760,
                        "src": "2922:19:16",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3722,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2922:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3725,
                        "mutability": "mutable",
                        "name": "store",
                        "nameLocation": "2958:5:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3760,
                        "src": "2943:20:16",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3724,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2943:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2921:43:16"
                  },
                  "returnParameters": {
                    "id": 3730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3729,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3760,
                        "src": "2983:11:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                          "typeString": "ShortString"
                        },
                        "typeName": {
                          "id": 3728,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3727,
                            "name": "ShortString",
                            "nameLocations": [
                              "2983:11:16"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3608,
                            "src": "2983:11:16"
                          },
                          "referencedDeclaration": 3608,
                          "src": "2983:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2982:13:16"
                  },
                  "scope": 3819,
                  "src": "2887:340:16",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3786,
                    "nodeType": "Block",
                    "src": "3477:158:16",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 3773,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3764,
                                "src": "3510:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                  "typeString": "ShortString"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                  "typeString": "ShortString"
                                }
                              ],
                              "expression": {
                                "id": 3771,
                                "name": "ShortString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3608,
                                "src": "3491:11:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_ShortString_$3608_$",
                                  "typeString": "type(ShortString)"
                                }
                              },
                              "id": 3772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "3503:6:16",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "3491:18:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$3608_$returns$_t_bytes32_$",
                                "typeString": "function (ShortString) pure returns (bytes32)"
                              }
                            },
                            "id": 3774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3491:25:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3775,
                            "name": "FALLBACK_SENTINEL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3612,
                            "src": "3520:17:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3491:46:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3784,
                          "nodeType": "Block",
                          "src": "3592:37:16",
                          "statements": [
                            {
                              "expression": {
                                "id": 3782,
                                "name": "store",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3766,
                                "src": "3613:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string storage pointer"
                                }
                              },
                              "functionReturnParameters": 3770,
                              "id": 3783,
                              "nodeType": "Return",
                              "src": "3606:12:16"
                            }
                          ]
                        },
                        "id": 3785,
                        "nodeType": "IfStatement",
                        "src": "3487:142:16",
                        "trueBody": {
                          "id": 3781,
                          "nodeType": "Block",
                          "src": "3539:47:16",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3778,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3764,
                                    "src": "3569:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                      "typeString": "ShortString"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                      "typeString": "ShortString"
                                    }
                                  ],
                                  "id": 3777,
                                  "name": "toString",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3688,
                                  "src": "3560:8:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ShortString_$3608_$returns$_t_string_memory_ptr_$",
                                    "typeString": "function (ShortString) pure returns (string memory)"
                                  }
                                },
                                "id": 3779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3560:15:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 3770,
                              "id": 3780,
                              "nodeType": "Return",
                              "src": "3553:22:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3761,
                    "nodeType": "StructuredDocumentation",
                    "src": "3233:130:16",
                    "text": " @dev Decode a string that was encoded to `ShortString` or written to storage using {toShortStringWithFallback}."
                  },
                  "id": 3787,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toStringWithFallback",
                  "nameLocation": "3377:20:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3767,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3764,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3410:5:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "3398:17:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                          "typeString": "ShortString"
                        },
                        "typeName": {
                          "id": 3763,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3762,
                            "name": "ShortString",
                            "nameLocations": [
                              "3398:11:16"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3608,
                            "src": "3398:11:16"
                          },
                          "referencedDeclaration": 3608,
                          "src": "3398:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3766,
                        "mutability": "mutable",
                        "name": "store",
                        "nameLocation": "3432:5:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "3417:20:16",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3765,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3417:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3397:41:16"
                  },
                  "returnParameters": {
                    "id": 3770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3769,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3787,
                        "src": "3462:13:16",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3768,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3462:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3461:15:16"
                  },
                  "scope": 3819,
                  "src": "3368:267:16",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3817,
                    "nodeType": "Block",
                    "src": "4125:174:16",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 3803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 3800,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3791,
                                "src": "4158:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                  "typeString": "ShortString"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                  "typeString": "ShortString"
                                }
                              ],
                              "expression": {
                                "id": 3798,
                                "name": "ShortString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3608,
                                "src": "4139:11:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_userDefinedValueType$_ShortString_$3608_$",
                                  "typeString": "type(ShortString)"
                                }
                              },
                              "id": 3799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4151:6:16",
                              "memberName": "unwrap",
                              "nodeType": "MemberAccess",
                              "src": "4139:18:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_ShortString_$3608_$returns$_t_bytes32_$",
                                "typeString": "function (ShortString) pure returns (bytes32)"
                              }
                            },
                            "id": 3801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4139:25:16",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3802,
                            "name": "FALLBACK_SENTINEL",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3612,
                            "src": "4168:17:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4139:46:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3815,
                          "nodeType": "Block",
                          "src": "4242:51:16",
                          "statements": [
                            {
                              "expression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3811,
                                      "name": "store",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3793,
                                      "src": "4269:5:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_storage_ptr",
                                        "typeString": "string storage pointer"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_storage_ptr",
                                        "typeString": "string storage pointer"
                                      }
                                    ],
                                    "id": 3810,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4263:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 3809,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4263:5:16",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4263:12:16",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes storage pointer"
                                  }
                                },
                                "id": 3813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "4276:6:16",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "4263:19:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 3797,
                              "id": 3814,
                              "nodeType": "Return",
                              "src": "4256:26:16"
                            }
                          ]
                        },
                        "id": 3816,
                        "nodeType": "IfStatement",
                        "src": "4135:158:16",
                        "trueBody": {
                          "id": 3808,
                          "nodeType": "Block",
                          "src": "4187:49:16",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3805,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3791,
                                    "src": "4219:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                      "typeString": "ShortString"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                      "typeString": "ShortString"
                                    }
                                  ],
                                  "id": 3804,
                                  "name": "byteLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3720,
                                  "src": "4208:10:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ShortString_$3608_$returns$_t_uint256_$",
                                    "typeString": "function (ShortString) pure returns (uint256)"
                                  }
                                },
                                "id": 3806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4208:17:16",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 3797,
                              "id": 3807,
                              "nodeType": "Return",
                              "src": "4201:24:16"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3788,
                    "nodeType": "StructuredDocumentation",
                    "src": "3641:374:16",
                    "text": " @dev Return the length of a string that was encoded to `ShortString` or written to storage using\n {toShortStringWithFallback}.\n WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n actual characters as the UTF-8 encoding of a single character can span over multiple bytes."
                  },
                  "id": 3818,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "byteLengthWithFallback",
                  "nameLocation": "4029:22:16",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3794,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3791,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4064:5:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3818,
                        "src": "4052:17:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                          "typeString": "ShortString"
                        },
                        "typeName": {
                          "id": 3790,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3789,
                            "name": "ShortString",
                            "nameLocations": [
                              "4052:11:16"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3608,
                            "src": "4052:11:16"
                          },
                          "referencedDeclaration": 3608,
                          "src": "4052:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3793,
                        "mutability": "mutable",
                        "name": "store",
                        "nameLocation": "4086:5:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 3818,
                        "src": "4071:20:16",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3792,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4071:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4051:41:16"
                  },
                  "returnParameters": {
                    "id": 3797,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3796,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3818,
                        "src": "4116:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3795,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4116:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4115:9:16"
                  },
                  "scope": 3819,
                  "src": "4020:279:16",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3820,
              "src": "1255:3046:16",
              "usedErrors": [
                3616,
                3618
              ],
              "usedEvents": []
            }
          ],
          "src": "106:4196:16"
        },
        "id": 16
      },
      "@openzeppelin/contracts/utils/StorageSlot.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol",
          "exportedSymbols": {
            "StorageSlot": [
              3943
            ]
          },
          "id": 3944,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3821,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "193:24:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "StorageSlot",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3822,
                "nodeType": "StructuredDocumentation",
                "src": "219:1187:17",
                "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(newImplementation.code.length > 0);\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."
              },
              "fullyImplemented": true,
              "id": 3943,
              "linearizedBaseContracts": [
                3943
              ],
              "name": "StorageSlot",
              "nameLocation": "1415:11:17",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "StorageSlot.AddressSlot",
                  "id": 3825,
                  "members": [
                    {
                      "constant": false,
                      "id": 3824,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1470:5:17",
                      "nodeType": "VariableDeclaration",
                      "scope": 3825,
                      "src": "1462:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3823,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1462:7:17",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "AddressSlot",
                  "nameLocation": "1440:11:17",
                  "nodeType": "StructDefinition",
                  "scope": 3943,
                  "src": "1433:49:17",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.BooleanSlot",
                  "id": 3828,
                  "members": [
                    {
                      "constant": false,
                      "id": 3827,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1522:5:17",
                      "nodeType": "VariableDeclaration",
                      "scope": 3828,
                      "src": "1517:10:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3826,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1517:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "BooleanSlot",
                  "nameLocation": "1495:11:17",
                  "nodeType": "StructDefinition",
                  "scope": 3943,
                  "src": "1488:46:17",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.Bytes32Slot",
                  "id": 3831,
                  "members": [
                    {
                      "constant": false,
                      "id": 3830,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1577:5:17",
                      "nodeType": "VariableDeclaration",
                      "scope": 3831,
                      "src": "1569:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3829,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1569:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Bytes32Slot",
                  "nameLocation": "1547:11:17",
                  "nodeType": "StructDefinition",
                  "scope": 3943,
                  "src": "1540:49:17",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.Uint256Slot",
                  "id": 3834,
                  "members": [
                    {
                      "constant": false,
                      "id": 3833,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1632:5:17",
                      "nodeType": "VariableDeclaration",
                      "scope": 3834,
                      "src": "1624:13:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3832,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1624:7:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Uint256Slot",
                  "nameLocation": "1602:11:17",
                  "nodeType": "StructDefinition",
                  "scope": 3943,
                  "src": "1595:49:17",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.Int256Slot",
                  "id": 3837,
                  "members": [
                    {
                      "constant": false,
                      "id": 3836,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1685:5:17",
                      "nodeType": "VariableDeclaration",
                      "scope": 3837,
                      "src": "1678:12:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 3835,
                        "name": "int256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1678:6:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Int256Slot",
                  "nameLocation": "1657:10:17",
                  "nodeType": "StructDefinition",
                  "scope": 3943,
                  "src": "1650:47:17",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.StringSlot",
                  "id": 3840,
                  "members": [
                    {
                      "constant": false,
                      "id": 3839,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1738:5:17",
                      "nodeType": "VariableDeclaration",
                      "scope": 3840,
                      "src": "1731:12:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 3838,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1731:6:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "StringSlot",
                  "nameLocation": "1710:10:17",
                  "nodeType": "StructDefinition",
                  "scope": 3943,
                  "src": "1703:47:17",
                  "visibility": "public"
                },
                {
                  "canonicalName": "StorageSlot.BytesSlot",
                  "id": 3843,
                  "members": [
                    {
                      "constant": false,
                      "id": 3842,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "1789:5:17",
                      "nodeType": "VariableDeclaration",
                      "scope": 3843,
                      "src": "1783:11:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 3841,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1783:5:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "BytesSlot",
                  "nameLocation": "1763:9:17",
                  "nodeType": "StructDefinition",
                  "scope": 3943,
                  "src": "1756:45:17",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3853,
                    "nodeType": "Block",
                    "src": "1983:79:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "2018:38:17",
                          "nodeType": "YulBlock",
                          "src": "2018:38:17",
                          "statements": [
                            {
                              "nativeSrc": "2032:14:17",
                              "nodeType": "YulAssignment",
                              "src": "2032:14:17",
                              "value": {
                                "name": "slot",
                                "nativeSrc": "2042:4:17",
                                "nodeType": "YulIdentifier",
                                "src": "2042:4:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "2032:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "2032:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3850,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2032:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3846,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2042:4:17",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3852,
                        "nodeType": "InlineAssembly",
                        "src": "1993:63:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3844,
                    "nodeType": "StructuredDocumentation",
                    "src": "1807:87:17",
                    "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`."
                  },
                  "id": 3854,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAddressSlot",
                  "nameLocation": "1908:14:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3846,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "1931:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3854,
                        "src": "1923:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3845,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1923:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1922:14:17"
                  },
                  "returnParameters": {
                    "id": 3851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3850,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "1980:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3854,
                        "src": "1960:21:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AddressSlot_$3825_storage_ptr",
                          "typeString": "struct StorageSlot.AddressSlot"
                        },
                        "typeName": {
                          "id": 3849,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3848,
                            "name": "AddressSlot",
                            "nameLocations": [
                              "1960:11:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3825,
                            "src": "1960:11:17"
                          },
                          "referencedDeclaration": 3825,
                          "src": "1960:11:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AddressSlot_$3825_storage_ptr",
                            "typeString": "struct StorageSlot.AddressSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1959:23:17"
                  },
                  "scope": 3943,
                  "src": "1899:163:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3864,
                    "nodeType": "Block",
                    "src": "2243:79:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "2278:38:17",
                          "nodeType": "YulBlock",
                          "src": "2278:38:17",
                          "statements": [
                            {
                              "nativeSrc": "2292:14:17",
                              "nodeType": "YulAssignment",
                              "src": "2292:14:17",
                              "value": {
                                "name": "slot",
                                "nativeSrc": "2302:4:17",
                                "nodeType": "YulIdentifier",
                                "src": "2302:4:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "2292:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "2292:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3861,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2292:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3857,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2302:4:17",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3863,
                        "nodeType": "InlineAssembly",
                        "src": "2253:63:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3855,
                    "nodeType": "StructuredDocumentation",
                    "src": "2068:86:17",
                    "text": " @dev Returns a `BooleanSlot` with member `value` located at `slot`."
                  },
                  "id": 3865,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBooleanSlot",
                  "nameLocation": "2168:14:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3857,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2191:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3865,
                        "src": "2183:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3856,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2183:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2182:14:17"
                  },
                  "returnParameters": {
                    "id": 3862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3861,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2240:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3865,
                        "src": "2220:21:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BooleanSlot_$3828_storage_ptr",
                          "typeString": "struct StorageSlot.BooleanSlot"
                        },
                        "typeName": {
                          "id": 3860,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3859,
                            "name": "BooleanSlot",
                            "nameLocations": [
                              "2220:11:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3828,
                            "src": "2220:11:17"
                          },
                          "referencedDeclaration": 3828,
                          "src": "2220:11:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BooleanSlot_$3828_storage_ptr",
                            "typeString": "struct StorageSlot.BooleanSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2219:23:17"
                  },
                  "scope": 3943,
                  "src": "2159:163:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3875,
                    "nodeType": "Block",
                    "src": "2503:79:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "2538:38:17",
                          "nodeType": "YulBlock",
                          "src": "2538:38:17",
                          "statements": [
                            {
                              "nativeSrc": "2552:14:17",
                              "nodeType": "YulAssignment",
                              "src": "2552:14:17",
                              "value": {
                                "name": "slot",
                                "nativeSrc": "2562:4:17",
                                "nodeType": "YulIdentifier",
                                "src": "2562:4:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "2552:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "2552:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3872,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2552:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3868,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2562:4:17",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3874,
                        "nodeType": "InlineAssembly",
                        "src": "2513:63:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3866,
                    "nodeType": "StructuredDocumentation",
                    "src": "2328:86:17",
                    "text": " @dev Returns a `Bytes32Slot` with member `value` located at `slot`."
                  },
                  "id": 3876,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBytes32Slot",
                  "nameLocation": "2428:14:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3868,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2451:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3876,
                        "src": "2443:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3867,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2443:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2442:14:17"
                  },
                  "returnParameters": {
                    "id": 3873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3872,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2500:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3876,
                        "src": "2480:21:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Bytes32Slot_$3831_storage_ptr",
                          "typeString": "struct StorageSlot.Bytes32Slot"
                        },
                        "typeName": {
                          "id": 3871,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3870,
                            "name": "Bytes32Slot",
                            "nameLocations": [
                              "2480:11:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3831,
                            "src": "2480:11:17"
                          },
                          "referencedDeclaration": 3831,
                          "src": "2480:11:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Bytes32Slot_$3831_storage_ptr",
                            "typeString": "struct StorageSlot.Bytes32Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2479:23:17"
                  },
                  "scope": 3943,
                  "src": "2419:163:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3886,
                    "nodeType": "Block",
                    "src": "2763:79:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "2798:38:17",
                          "nodeType": "YulBlock",
                          "src": "2798:38:17",
                          "statements": [
                            {
                              "nativeSrc": "2812:14:17",
                              "nodeType": "YulAssignment",
                              "src": "2812:14:17",
                              "value": {
                                "name": "slot",
                                "nativeSrc": "2822:4:17",
                                "nodeType": "YulIdentifier",
                                "src": "2822:4:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "2812:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "2812:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3883,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "2812:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3879,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2822:4:17",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3885,
                        "nodeType": "InlineAssembly",
                        "src": "2773:63:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3877,
                    "nodeType": "StructuredDocumentation",
                    "src": "2588:86:17",
                    "text": " @dev Returns a `Uint256Slot` with member `value` located at `slot`."
                  },
                  "id": 3887,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getUint256Slot",
                  "nameLocation": "2688:14:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3879,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2711:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3887,
                        "src": "2703:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3878,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2703:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2702:14:17"
                  },
                  "returnParameters": {
                    "id": 3884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3883,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "2760:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3887,
                        "src": "2740:21:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Uint256Slot_$3834_storage_ptr",
                          "typeString": "struct StorageSlot.Uint256Slot"
                        },
                        "typeName": {
                          "id": 3882,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3881,
                            "name": "Uint256Slot",
                            "nameLocations": [
                              "2740:11:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3834,
                            "src": "2740:11:17"
                          },
                          "referencedDeclaration": 3834,
                          "src": "2740:11:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Uint256Slot_$3834_storage_ptr",
                            "typeString": "struct StorageSlot.Uint256Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2739:23:17"
                  },
                  "scope": 3943,
                  "src": "2679:163:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3897,
                    "nodeType": "Block",
                    "src": "3020:79:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "3055:38:17",
                          "nodeType": "YulBlock",
                          "src": "3055:38:17",
                          "statements": [
                            {
                              "nativeSrc": "3069:14:17",
                              "nodeType": "YulAssignment",
                              "src": "3069:14:17",
                              "value": {
                                "name": "slot",
                                "nativeSrc": "3079:4:17",
                                "nodeType": "YulIdentifier",
                                "src": "3079:4:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "3069:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "3069:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3894,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "3069:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3890,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3079:4:17",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3896,
                        "nodeType": "InlineAssembly",
                        "src": "3030:63:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3888,
                    "nodeType": "StructuredDocumentation",
                    "src": "2848:85:17",
                    "text": " @dev Returns a `Int256Slot` with member `value` located at `slot`."
                  },
                  "id": 3898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getInt256Slot",
                  "nameLocation": "2947:13:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3891,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3890,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "2969:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3898,
                        "src": "2961:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3889,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2961:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2960:14:17"
                  },
                  "returnParameters": {
                    "id": 3895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3894,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "3017:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3898,
                        "src": "2998:20:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Int256Slot_$3837_storage_ptr",
                          "typeString": "struct StorageSlot.Int256Slot"
                        },
                        "typeName": {
                          "id": 3893,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3892,
                            "name": "Int256Slot",
                            "nameLocations": [
                              "2998:10:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3837,
                            "src": "2998:10:17"
                          },
                          "referencedDeclaration": 3837,
                          "src": "2998:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Int256Slot_$3837_storage_ptr",
                            "typeString": "struct StorageSlot.Int256Slot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2997:22:17"
                  },
                  "scope": 3943,
                  "src": "2938:161:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3908,
                    "nodeType": "Block",
                    "src": "3277:79:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "3312:38:17",
                          "nodeType": "YulBlock",
                          "src": "3312:38:17",
                          "statements": [
                            {
                              "nativeSrc": "3326:14:17",
                              "nodeType": "YulAssignment",
                              "src": "3326:14:17",
                              "value": {
                                "name": "slot",
                                "nativeSrc": "3336:4:17",
                                "nodeType": "YulIdentifier",
                                "src": "3336:4:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "3326:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "3326:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3905,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "3326:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3901,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3336:4:17",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3907,
                        "nodeType": "InlineAssembly",
                        "src": "3287:63:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3899,
                    "nodeType": "StructuredDocumentation",
                    "src": "3105:85:17",
                    "text": " @dev Returns a `StringSlot` with member `value` located at `slot`."
                  },
                  "id": 3909,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getStringSlot",
                  "nameLocation": "3204:13:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3901,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "3226:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3909,
                        "src": "3218:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3900,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3218:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3217:14:17"
                  },
                  "returnParameters": {
                    "id": 3906,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3905,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "3274:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3909,
                        "src": "3255:20:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StringSlot_$3840_storage_ptr",
                          "typeString": "struct StorageSlot.StringSlot"
                        },
                        "typeName": {
                          "id": 3904,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3903,
                            "name": "StringSlot",
                            "nameLocations": [
                              "3255:10:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3840,
                            "src": "3255:10:17"
                          },
                          "referencedDeclaration": 3840,
                          "src": "3255:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StringSlot_$3840_storage_ptr",
                            "typeString": "struct StorageSlot.StringSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3254:22:17"
                  },
                  "scope": 3943,
                  "src": "3195:161:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3919,
                    "nodeType": "Block",
                    "src": "3558:85:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "3593:44:17",
                          "nodeType": "YulBlock",
                          "src": "3593:44:17",
                          "statements": [
                            {
                              "nativeSrc": "3607:20:17",
                              "nodeType": "YulAssignment",
                              "src": "3607:20:17",
                              "value": {
                                "name": "store.slot",
                                "nativeSrc": "3617:10:17",
                                "nodeType": "YulIdentifier",
                                "src": "3617:10:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "3607:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "3607:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3916,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "3607:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3912,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "3617:10:17",
                            "suffix": "slot",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3918,
                        "nodeType": "InlineAssembly",
                        "src": "3568:69:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3910,
                    "nodeType": "StructuredDocumentation",
                    "src": "3362:101:17",
                    "text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`."
                  },
                  "id": 3920,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getStringSlot",
                  "nameLocation": "3477:13:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3913,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3912,
                        "mutability": "mutable",
                        "name": "store",
                        "nameLocation": "3506:5:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3920,
                        "src": "3491:20:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3911,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3491:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3490:22:17"
                  },
                  "returnParameters": {
                    "id": 3917,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3916,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "3555:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3920,
                        "src": "3536:20:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_StringSlot_$3840_storage_ptr",
                          "typeString": "struct StorageSlot.StringSlot"
                        },
                        "typeName": {
                          "id": 3915,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3914,
                            "name": "StringSlot",
                            "nameLocations": [
                              "3536:10:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3840,
                            "src": "3536:10:17"
                          },
                          "referencedDeclaration": 3840,
                          "src": "3536:10:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_StringSlot_$3840_storage_ptr",
                            "typeString": "struct StorageSlot.StringSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3535:22:17"
                  },
                  "scope": 3943,
                  "src": "3468:175:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3930,
                    "nodeType": "Block",
                    "src": "3818:79:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "3853:38:17",
                          "nodeType": "YulBlock",
                          "src": "3853:38:17",
                          "statements": [
                            {
                              "nativeSrc": "3867:14:17",
                              "nodeType": "YulAssignment",
                              "src": "3867:14:17",
                              "value": {
                                "name": "slot",
                                "nativeSrc": "3877:4:17",
                                "nodeType": "YulIdentifier",
                                "src": "3877:4:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "3867:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "3867:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3927,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "3867:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3923,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3877:4:17",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3929,
                        "nodeType": "InlineAssembly",
                        "src": "3828:63:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3921,
                    "nodeType": "StructuredDocumentation",
                    "src": "3649:84:17",
                    "text": " @dev Returns a `BytesSlot` with member `value` located at `slot`."
                  },
                  "id": 3931,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBytesSlot",
                  "nameLocation": "3747:12:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3924,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3923,
                        "mutability": "mutable",
                        "name": "slot",
                        "nameLocation": "3768:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3931,
                        "src": "3760:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3922,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3760:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3759:14:17"
                  },
                  "returnParameters": {
                    "id": 3928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3927,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "3815:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3931,
                        "src": "3797:19:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BytesSlot_$3843_storage_ptr",
                          "typeString": "struct StorageSlot.BytesSlot"
                        },
                        "typeName": {
                          "id": 3926,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3925,
                            "name": "BytesSlot",
                            "nameLocations": [
                              "3797:9:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3843,
                            "src": "3797:9:17"
                          },
                          "referencedDeclaration": 3843,
                          "src": "3797:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BytesSlot_$3843_storage_ptr",
                            "typeString": "struct StorageSlot.BytesSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3796:21:17"
                  },
                  "scope": 3943,
                  "src": "3738:159:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3941,
                    "nodeType": "Block",
                    "src": "4094:85:17",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "4129:44:17",
                          "nodeType": "YulBlock",
                          "src": "4129:44:17",
                          "statements": [
                            {
                              "nativeSrc": "4143:20:17",
                              "nodeType": "YulAssignment",
                              "src": "4143:20:17",
                              "value": {
                                "name": "store.slot",
                                "nativeSrc": "4153:10:17",
                                "nodeType": "YulIdentifier",
                                "src": "4153:10:17"
                              },
                              "variableNames": [
                                {
                                  "name": "r.slot",
                                  "nativeSrc": "4143:6:17",
                                  "nodeType": "YulIdentifier",
                                  "src": "4143:6:17"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 3938,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "4143:6:17",
                            "suffix": "slot",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3934,
                            "isOffset": false,
                            "isSlot": true,
                            "src": "4153:10:17",
                            "suffix": "slot",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 3940,
                        "nodeType": "InlineAssembly",
                        "src": "4104:69:17"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3932,
                    "nodeType": "StructuredDocumentation",
                    "src": "3903:99:17",
                    "text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."
                  },
                  "id": 3942,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBytesSlot",
                  "nameLocation": "4016:12:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3934,
                        "mutability": "mutable",
                        "name": "store",
                        "nameLocation": "4043:5:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3942,
                        "src": "4029:19:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3933,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4029:5:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4028:21:17"
                  },
                  "returnParameters": {
                    "id": 3939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3938,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "4091:1:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 3942,
                        "src": "4073:19:17",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BytesSlot_$3843_storage_ptr",
                          "typeString": "struct StorageSlot.BytesSlot"
                        },
                        "typeName": {
                          "id": 3937,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 3936,
                            "name": "BytesSlot",
                            "nameLocations": [
                              "4073:9:17"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3843,
                            "src": "4073:9:17"
                          },
                          "referencedDeclaration": 3843,
                          "src": "4073:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BytesSlot_$3843_storage_ptr",
                            "typeString": "struct StorageSlot.BytesSlot"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4072:21:17"
                  },
                  "scope": 3943,
                  "src": "4007:172:17",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3944,
              "src": "1407:2774:17",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "193:3989:17"
        },
        "id": 17
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
          "exportedSymbols": {
            "Math": [
              7931
            ],
            "SafeCast": [
              9696
            ],
            "SignedMath": [
              9840
            ],
            "Strings": [
              5345
            ]
          },
          "id": 5346,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3945,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "101:24:18"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
              "file": "./math/Math.sol",
              "id": 3947,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5346,
              "sourceUnit": 7932,
              "src": "127:37:18",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3946,
                    "name": "Math",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7931,
                    "src": "135:4:18",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
              "file": "./math/SafeCast.sol",
              "id": 3949,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5346,
              "sourceUnit": 9697,
              "src": "165:45:18",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3948,
                    "name": "SafeCast",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9696,
                    "src": "173:8:18",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol",
              "file": "./math/SignedMath.sol",
              "id": 3951,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5346,
              "sourceUnit": 9841,
              "src": "211:49:18",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3950,
                    "name": "SignedMath",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9840,
                    "src": "219:10:18",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Strings",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3952,
                "nodeType": "StructuredDocumentation",
                "src": "262:34:18",
                "text": " @dev String operations."
              },
              "fullyImplemented": true,
              "id": 5345,
              "linearizedBaseContracts": [
                5345
              ],
              "name": "Strings",
              "nameLocation": "305:7:18",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 3954,
                  "libraryName": {
                    "id": 3953,
                    "name": "SafeCast",
                    "nameLocations": [
                      "325:8:18"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 9696,
                    "src": "325:8:18"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "319:21:18"
                },
                {
                  "constant": true,
                  "id": 3957,
                  "mutability": "constant",
                  "name": "HEX_DIGITS",
                  "nameLocation": "371:10:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5345,
                  "src": "346:56:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 3955,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "346:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "value": {
                    "hexValue": "30313233343536373839616263646566",
                    "id": 3956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "384:18:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                      "typeString": "literal_string \"0123456789abcdef\""
                    },
                    "value": "0123456789abcdef"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 3960,
                  "mutability": "constant",
                  "name": "ADDRESS_LENGTH",
                  "nameLocation": "431:14:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5345,
                  "src": "408:42:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 3958,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "408:5:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3230",
                    "id": 3959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "448:2:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_20_by_1",
                      "typeString": "int_const 20"
                    },
                    "value": "20"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 3996,
                  "mutability": "constant",
                  "name": "SPECIAL_CHARS_LOOKUP",
                  "nameLocation": "481:20:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5345,
                  "src": "456:302:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3961,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "456:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_4951760157141521116776380160_by_1",
                      "typeString": "int_const 4951760157141521116776380160"
                    },
                    "id": 3995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_17179883264_by_1",
                        "typeString": "int_const 17179883264"
                      },
                      "id": 3990,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_rational_14080_by_1",
                          "typeString": "int_const 14080"
                        },
                        "id": 3985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_rational_5888_by_1",
                            "typeString": "int_const 5888"
                          },
                          "id": 3980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_rational_1792_by_1",
                              "typeString": "int_const 1792"
                            },
                            "id": 3975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_rational_768_by_1",
                                "typeString": "int_const 768"
                              },
                              "id": 3970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    },
                                    "id": 3964,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 3962,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "513:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "30783038",
                                      "id": 3963,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "518:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "0x08"
                                    },
                                    "src": "513:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    }
                                  }
                                ],
                                "id": 3965,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "512:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_256_by_1",
                                  "typeString": "int_const 256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_512_by_1",
                                      "typeString": "int_const 512"
                                    },
                                    "id": 3968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 3966,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "552:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "30783039",
                                      "id": 3967,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "557:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_9_by_1",
                                        "typeString": "int_const 9"
                                      },
                                      "value": "0x09"
                                    },
                                    "src": "552:9:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_512_by_1",
                                      "typeString": "int_const 512"
                                    }
                                  }
                                ],
                                "id": 3969,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "551:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_512_by_1",
                                  "typeString": "int_const 512"
                                }
                              },
                              "src": "512:50:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_768_by_1",
                                "typeString": "int_const 768"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "|",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_rational_1024_by_1",
                                    "typeString": "int_const 1024"
                                  },
                                  "id": 3973,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "hexValue": "31",
                                    "id": 3971,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "585:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "hexValue": "30783061",
                                    "id": 3972,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "590:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_10_by_1",
                                      "typeString": "int_const 10"
                                    },
                                    "value": "0x0a"
                                  },
                                  "src": "585:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1024_by_1",
                                    "typeString": "int_const 1024"
                                  }
                                }
                              ],
                              "id": 3974,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "584:11:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1024_by_1",
                                "typeString": "int_const 1024"
                              }
                            },
                            "src": "512:83:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1792_by_1",
                              "typeString": "int_const 1792"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "|",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_rational_4096_by_1",
                                  "typeString": "int_const 4096"
                                },
                                "id": 3978,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "31",
                                  "id": 3976,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "622:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "hexValue": "30783063",
                                  "id": 3977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "627:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_12_by_1",
                                    "typeString": "int_const 12"
                                  },
                                  "value": "0x0c"
                                },
                                "src": "622:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4096_by_1",
                                  "typeString": "int_const 4096"
                                }
                              }
                            ],
                            "id": 3979,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "621:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4096_by_1",
                              "typeString": "int_const 4096"
                            }
                          },
                          "src": "512:120:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_5888_by_1",
                            "typeString": "int_const 5888"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "|",
                        "rightExpression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_rational_8192_by_1",
                                "typeString": "int_const 8192"
                              },
                              "id": 3983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "31",
                                "id": 3981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "661:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<<",
                              "rightExpression": {
                                "hexValue": "30783064",
                                "id": 3982,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "666:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_13_by_1",
                                  "typeString": "int_const 13"
                                },
                                "value": "0x0d"
                              },
                              "src": "661:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_8192_by_1",
                                "typeString": "int_const 8192"
                              }
                            }
                          ],
                          "id": 3984,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "660:11:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8192_by_1",
                            "typeString": "int_const 8192"
                          }
                        },
                        "src": "512:159:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_14080_by_1",
                          "typeString": "int_const 14080"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_rational_17179869184_by_1",
                              "typeString": "int_const 17179869184"
                            },
                            "id": 3988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "31",
                              "id": 3986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "706:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "30783232",
                              "id": 3987,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "711:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_34_by_1",
                                "typeString": "int_const 34"
                              },
                              "value": "0x22"
                            },
                            "src": "706:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_17179869184_by_1",
                              "typeString": "int_const 17179869184"
                            }
                          }
                        ],
                        "id": 3989,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "705:11:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_17179869184_by_1",
                          "typeString": "int_const 17179869184"
                        }
                      },
                      "src": "512:204:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_17179883264_by_1",
                        "typeString": "int_const 17179883264"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "|",
                    "rightExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_rational_4951760157141521099596496896_by_1",
                            "typeString": "int_const 4951760157141521099596496896"
                          },
                          "id": 3993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "31",
                            "id": 3991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "748:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "hexValue": "30783563",
                            "id": 3992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "753:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_92_by_1",
                              "typeString": "int_const 92"
                            },
                            "value": "0x5c"
                          },
                          "src": "748:9:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4951760157141521099596496896_by_1",
                            "typeString": "int_const 4951760157141521099596496896"
                          }
                        }
                      ],
                      "id": 3994,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "747:11:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4951760157141521099596496896_by_1",
                        "typeString": "int_const 4951760157141521099596496896"
                      }
                    },
                    "src": "512:246:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4951760157141521116776380160_by_1",
                      "typeString": "int_const 4951760157141521116776380160"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "documentation": {
                    "id": 3997,
                    "nodeType": "StructuredDocumentation",
                    "src": "778:81:18",
                    "text": " @dev The `value` string doesn't fit in the specified `length`."
                  },
                  "errorSelector": "e22e27eb",
                  "id": 4003,
                  "name": "StringsInsufficientHexLength",
                  "nameLocation": "870:28:18",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 4002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3999,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "907:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4003,
                        "src": "899:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "899:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4001,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "922:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4003,
                        "src": "914:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "914:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "898:31:18"
                  },
                  "src": "864:66:18"
                },
                {
                  "documentation": {
                    "id": 4004,
                    "nodeType": "StructuredDocumentation",
                    "src": "936:108:18",
                    "text": " @dev The string being parsed contains characters that are not in scope of the given base."
                  },
                  "errorSelector": "94e2737e",
                  "id": 4006,
                  "name": "StringsInvalidChar",
                  "nameLocation": "1055:18:18",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 4005,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1073:2:18"
                  },
                  "src": "1049:27:18"
                },
                {
                  "documentation": {
                    "id": 4007,
                    "nodeType": "StructuredDocumentation",
                    "src": "1082:84:18",
                    "text": " @dev The string being parsed is not a properly formatted address."
                  },
                  "errorSelector": "1d15ae44",
                  "id": 4009,
                  "name": "StringsInvalidAddressFormat",
                  "nameLocation": "1177:27:18",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 4008,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1204:2:18"
                  },
                  "src": "1171:36:18"
                },
                {
                  "body": {
                    "id": 4056,
                    "nodeType": "Block",
                    "src": "1379:563:18",
                    "statements": [
                      {
                        "id": 4055,
                        "nodeType": "UncheckedBlock",
                        "src": "1389:547:18",
                        "statements": [
                          {
                            "assignments": [
                              4018
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4018,
                                "mutability": "mutable",
                                "name": "length",
                                "nameLocation": "1421:6:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4055,
                                "src": "1413:14:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4017,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1413:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4025,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 4021,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4012,
                                    "src": "1441:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 4019,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7931,
                                    "src": "1430:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$7931_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 4020,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1435:5:18",
                                  "memberName": "log10",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7763,
                                  "src": "1430:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 4022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1430:17:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 4023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1450:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1430:21:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1413:38:18"
                          },
                          {
                            "assignments": [
                              4027
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4027,
                                "mutability": "mutable",
                                "name": "buffer",
                                "nameLocation": "1479:6:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4055,
                                "src": "1465:20:18",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string"
                                },
                                "typeName": {
                                  "id": 4026,
                                  "name": "string",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1465:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage_ptr",
                                    "typeString": "string"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4032,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 4030,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4018,
                                  "src": "1499:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 4029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "1488:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                },
                                "typeName": {
                                  "id": 4028,
                                  "name": "string",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1492:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage_ptr",
                                    "typeString": "string"
                                  }
                                }
                              },
                              "id": 4031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1488:18:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1465:41:18"
                          },
                          {
                            "assignments": [
                              4034
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4034,
                                "mutability": "mutable",
                                "name": "ptr",
                                "nameLocation": "1528:3:18",
                                "nodeType": "VariableDeclaration",
                                "scope": 4055,
                                "src": "1520:11:18",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4033,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1520:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4035,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1520:11:18"
                          },
                          {
                            "AST": {
                              "nativeSrc": "1570:69:18",
                              "nodeType": "YulBlock",
                              "src": "1570:69:18",
                              "statements": [
                                {
                                  "nativeSrc": "1588:37:18",
                                  "nodeType": "YulAssignment",
                                  "src": "1588:37:18",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "buffer",
                                            "nativeSrc": "1603:6:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "1603:6:18"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "1611:4:18",
                                            "nodeType": "YulLiteral",
                                            "src": "1611:4:18",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "1599:3:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "1599:3:18"
                                        },
                                        "nativeSrc": "1599:17:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "1599:17:18"
                                      },
                                      {
                                        "name": "length",
                                        "nativeSrc": "1618:6:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "1618:6:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "1595:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "1595:3:18"
                                    },
                                    "nativeSrc": "1595:30:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1595:30:18"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "ptr",
                                      "nativeSrc": "1588:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "1588:3:18"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "cancun",
                            "externalReferences": [
                              {
                                "declaration": 4027,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1603:6:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4018,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1618:6:18",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4034,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1588:3:18",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 4036,
                            "nodeType": "InlineAssembly",
                            "src": "1545:94:18"
                          },
                          {
                            "body": {
                              "id": 4051,
                              "nodeType": "Block",
                              "src": "1665:234:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4039,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "--",
                                    "prefix": false,
                                    "src": "1683:5:18",
                                    "subExpression": {
                                      "id": 4038,
                                      "name": "ptr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4034,
                                      "src": "1683:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4040,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1683:5:18"
                                },
                                {
                                  "AST": {
                                    "nativeSrc": "1731:86:18",
                                    "nodeType": "YulBlock",
                                    "src": "1731:86:18",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "ptr",
                                              "nativeSrc": "1761:3:18",
                                              "nodeType": "YulIdentifier",
                                              "src": "1761:3:18"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nativeSrc": "1775:5:18",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1775:5:18"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nativeSrc": "1782:2:18",
                                                      "nodeType": "YulLiteral",
                                                      "src": "1782:2:18",
                                                      "type": "",
                                                      "value": "10"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mod",
                                                    "nativeSrc": "1771:3:18",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1771:3:18"
                                                  },
                                                  "nativeSrc": "1771:14:18",
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1771:14:18"
                                                },
                                                {
                                                  "name": "HEX_DIGITS",
                                                  "nativeSrc": "1787:10:18",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1787:10:18"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "byte",
                                                "nativeSrc": "1766:4:18",
                                                "nodeType": "YulIdentifier",
                                                "src": "1766:4:18"
                                              },
                                              "nativeSrc": "1766:32:18",
                                              "nodeType": "YulFunctionCall",
                                              "src": "1766:32:18"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore8",
                                            "nativeSrc": "1753:7:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "1753:7:18"
                                          },
                                          "nativeSrc": "1753:46:18",
                                          "nodeType": "YulFunctionCall",
                                          "src": "1753:46:18"
                                        },
                                        "nativeSrc": "1753:46:18",
                                        "nodeType": "YulExpressionStatement",
                                        "src": "1753:46:18"
                                      }
                                    ]
                                  },
                                  "evmVersion": "cancun",
                                  "externalReferences": [
                                    {
                                      "declaration": 3957,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1787:10:18",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 4034,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1761:3:18",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 4012,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1775:5:18",
                                      "valueSize": 1
                                    }
                                  ],
                                  "flags": [
                                    "memory-safe"
                                  ],
                                  "id": 4041,
                                  "nodeType": "InlineAssembly",
                                  "src": "1706:111:18"
                                },
                                {
                                  "expression": {
                                    "id": 4044,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4042,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "1834:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "hexValue": "3130",
                                      "id": 4043,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1843:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10_by_1",
                                        "typeString": "int_const 10"
                                      },
                                      "value": "10"
                                    },
                                    "src": "1834:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4045,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1834:11:18"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4046,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4012,
                                      "src": "1867:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 4047,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1876:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1867:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 4050,
                                  "nodeType": "IfStatement",
                                  "src": "1863:21:18",
                                  "trueBody": {
                                    "id": 4049,
                                    "nodeType": "Break",
                                    "src": "1879:5:18"
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "hexValue": "74727565",
                              "id": 4037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1659:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "id": 4052,
                            "nodeType": "WhileStatement",
                            "src": "1652:247:18"
                          },
                          {
                            "expression": {
                              "id": 4053,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4027,
                              "src": "1919:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 4016,
                            "id": 4054,
                            "nodeType": "Return",
                            "src": "1912:13:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4010,
                    "nodeType": "StructuredDocumentation",
                    "src": "1213:90:18",
                    "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
                  },
                  "id": 4057,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toString",
                  "nameLocation": "1317:8:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4013,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4012,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1334:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4057,
                        "src": "1326:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4011,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1326:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1325:15:18"
                  },
                  "returnParameters": {
                    "id": 4016,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4015,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4057,
                        "src": "1364:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4014,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1364:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1363:15:18"
                  },
                  "scope": 5345,
                  "src": "1308:634:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4082,
                    "nodeType": "Block",
                    "src": "2118:92:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 4070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4068,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4060,
                                  "src": "2149:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 4069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2157:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "2149:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "hexValue": "",
                                "id": 4072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2167:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              },
                              "id": 4073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "2149:20:18",
                              "trueExpression": {
                                "hexValue": "2d",
                                "id": 4071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2161:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
                                  "typeString": "literal_string \"-\""
                                },
                                "value": "-"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 4077,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4060,
                                      "src": "2195:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 4075,
                                      "name": "SignedMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9840,
                                      "src": "2180:10:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SignedMath_$9840_$",
                                        "typeString": "type(library SignedMath)"
                                      }
                                    },
                                    "id": 4076,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2191:3:18",
                                    "memberName": "abs",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9839,
                                    "src": "2180:14:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$",
                                      "typeString": "function (int256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 4078,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2180:21:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 4074,
                                "name": "toString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4057,
                                "src": "2171:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                }
                              },
                              "id": 4079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2171:31:18",
                              "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": 4066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2135:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 4065,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "2135:6:18",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2142:6:18",
                            "memberName": "concat",
                            "nodeType": "MemberAccess",
                            "src": "2135:13:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$",
                              "typeString": "function () pure returns (string memory)"
                            }
                          },
                          "id": 4080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2135:68:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4064,
                        "id": 4081,
                        "nodeType": "Return",
                        "src": "2128:75:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4058,
                    "nodeType": "StructuredDocumentation",
                    "src": "1948:89:18",
                    "text": " @dev Converts a `int256` to its ASCII `string` decimal representation."
                  },
                  "id": 4083,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toStringSigned",
                  "nameLocation": "2051:14:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4061,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4060,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2073:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4083,
                        "src": "2066:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4059,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2066:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2065:14:18"
                  },
                  "returnParameters": {
                    "id": 4064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4063,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4083,
                        "src": "2103:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4062,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2103:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2102:15:18"
                  },
                  "scope": 5345,
                  "src": "2042:168:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4102,
                    "nodeType": "Block",
                    "src": "2389:100:18",
                    "statements": [
                      {
                        "id": 4101,
                        "nodeType": "UncheckedBlock",
                        "src": "2399:84:18",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4092,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4086,
                                  "src": "2442:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4098,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 4095,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4086,
                                        "src": "2461:5:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 4093,
                                        "name": "Math",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7931,
                                        "src": "2449:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Math_$7931_$",
                                          "typeString": "type(library Math)"
                                        }
                                      },
                                      "id": 4094,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "2454:6:18",
                                      "memberName": "log256",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7874,
                                      "src": "2449:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4096,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2449:18:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4097,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2470:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "2449:22:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 4091,
                                "name": "toHexString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4103,
                                  4186,
                                  4206
                                ],
                                "referencedDeclaration": 4186,
                                "src": "2430:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (uint256,uint256) pure returns (string memory)"
                                }
                              },
                              "id": 4099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2430:42:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 4090,
                            "id": 4100,
                            "nodeType": "Return",
                            "src": "2423:49:18"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4084,
                    "nodeType": "StructuredDocumentation",
                    "src": "2216:94:18",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
                  },
                  "id": 4103,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "2324:11:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4086,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2344:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4103,
                        "src": "2336:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4085,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2336:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2335:15:18"
                  },
                  "returnParameters": {
                    "id": 4090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4089,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4103,
                        "src": "2374:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4088,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2374:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2373:15:18"
                  },
                  "scope": 5345,
                  "src": "2315:174:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4185,
                    "nodeType": "Block",
                    "src": "2702:435:18",
                    "statements": [
                      {
                        "assignments": [
                          4114
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4114,
                            "mutability": "mutable",
                            "name": "localValue",
                            "nameLocation": "2720:10:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4185,
                            "src": "2712:18:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4113,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2712:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4116,
                        "initialValue": {
                          "id": 4115,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4106,
                          "src": "2733:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2712:26:18"
                      },
                      {
                        "assignments": [
                          4118
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4118,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "2761:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4185,
                            "src": "2748:19:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4117,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2748:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4127,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 4121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2780:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 4122,
                                  "name": "length",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4108,
                                  "src": "2784:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2780:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 4124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2793:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "2780:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2770:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 4119,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2774:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 4126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2770:25:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2748:47:18"
                      },
                      {
                        "expression": {
                          "id": 4132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4128,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4118,
                              "src": "2805:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4130,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 4129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2812:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2805:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 4131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2817:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                              "typeString": "literal_string \"0\""
                            },
                            "value": "0"
                          },
                          "src": "2805:15:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 4133,
                        "nodeType": "ExpressionStatement",
                        "src": "2805:15:18"
                      },
                      {
                        "expression": {
                          "id": 4138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 4134,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4118,
                              "src": "2830:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4136,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 4135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2837:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2830:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "78",
                            "id": 4137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2842:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                              "typeString": "literal_string \"x\""
                            },
                            "value": "x"
                          },
                          "src": "2830:15:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 4139,
                        "nodeType": "ExpressionStatement",
                        "src": "2830:15:18"
                      },
                      {
                        "body": {
                          "id": 4168,
                          "nodeType": "Block",
                          "src": "2900:95:18",
                          "statements": [
                            {
                              "expression": {
                                "id": 4162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4154,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4118,
                                    "src": "2914:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 4156,
                                  "indexExpression": {
                                    "id": 4155,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4141,
                                    "src": "2921:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2914:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 4157,
                                    "name": "HEX_DIGITS",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3957,
                                    "src": "2926:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes16",
                                      "typeString": "bytes16"
                                    }
                                  },
                                  "id": 4161,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4160,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4158,
                                      "name": "localValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4114,
                                      "src": "2937:10:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 4159,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2950:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "2937:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2926:28:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "2914:40:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 4163,
                              "nodeType": "ExpressionStatement",
                              "src": "2914:40:18"
                            },
                            {
                              "expression": {
                                "id": 4166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4164,
                                  "name": "localValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4114,
                                  "src": "2968:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 4165,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2983:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "2968:16:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4167,
                              "nodeType": "ExpressionStatement",
                              "src": "2968:16:18"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4148,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4141,
                            "src": "2888:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 4149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2892:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2888:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4169,
                        "initializationExpression": {
                          "assignments": [
                            4141
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4141,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2868:1:18",
                              "nodeType": "VariableDeclaration",
                              "scope": 4169,
                              "src": "2860:9:18",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4140,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2860:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4147,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 4142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2872:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 4143,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4108,
                                "src": "2876:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2872:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 4145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2885:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "2872:14:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2860:26:18"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 4152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "2895:3:18",
                            "subExpression": {
                              "id": 4151,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4141,
                              "src": "2897:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4153,
                          "nodeType": "ExpressionStatement",
                          "src": "2895:3:18"
                        },
                        "nodeType": "ForStatement",
                        "src": "2855:140:18"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4170,
                            "name": "localValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4114,
                            "src": "3008:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3022:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3008:15:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4179,
                        "nodeType": "IfStatement",
                        "src": "3004:96:18",
                        "trueBody": {
                          "id": 4178,
                          "nodeType": "Block",
                          "src": "3025:75:18",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 4174,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4106,
                                    "src": "3075:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4175,
                                    "name": "length",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4108,
                                    "src": "3082:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4173,
                                  "name": "StringsInsufficientHexLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4003,
                                  "src": "3046:28:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint256,uint256) pure returns (error)"
                                  }
                                },
                                "id": 4176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3046:43:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 4177,
                              "nodeType": "RevertStatement",
                              "src": "3039:50:18"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4182,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4118,
                              "src": "3123:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3116:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 4180,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "3116:6:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3116:14:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4112,
                        "id": 4184,
                        "nodeType": "Return",
                        "src": "3109:21:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4104,
                    "nodeType": "StructuredDocumentation",
                    "src": "2495:112:18",
                    "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
                  },
                  "id": 4186,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "2621:11:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4106,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2641:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4186,
                        "src": "2633:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4105,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2633:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4108,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "2656:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4186,
                        "src": "2648:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4107,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2648:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2632:31:18"
                  },
                  "returnParameters": {
                    "id": 4112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4111,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4186,
                        "src": "2687:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4110,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2687:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2686:15:18"
                  },
                  "scope": 5345,
                  "src": "2612:525:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4205,
                    "nodeType": "Block",
                    "src": "3369:75:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 4199,
                                      "name": "addr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4189,
                                      "src": "3414:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 4198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3406:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 4197,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3406:7:18",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4200,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3406:13:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 4196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3398:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 4195,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3398:7:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3398:22:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4202,
                              "name": "ADDRESS_LENGTH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3960,
                              "src": "3422:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 4194,
                            "name": "toHexString",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4103,
                              4186,
                              4206
                            ],
                            "referencedDeclaration": 4186,
                            "src": "3386:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                              "typeString": "function (uint256,uint256) pure returns (string memory)"
                            }
                          },
                          "id": 4203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3386:51:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4193,
                        "id": 4204,
                        "nodeType": "Return",
                        "src": "3379:58:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4187,
                    "nodeType": "StructuredDocumentation",
                    "src": "3143:148:18",
                    "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."
                  },
                  "id": 4206,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toHexString",
                  "nameLocation": "3305:11:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4189,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "3325:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4206,
                        "src": "3317:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3317:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3316:14:18"
                  },
                  "returnParameters": {
                    "id": 4193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4192,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4206,
                        "src": "3354:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4191,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3354:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3353:15:18"
                  },
                  "scope": 5345,
                  "src": "3296:148:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4270,
                    "nodeType": "Block",
                    "src": "3701:642:18",
                    "statements": [
                      {
                        "assignments": [
                          4215
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4215,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "3724:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4270,
                            "src": "3711:19:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4214,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3711:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4222,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 4219,
                                  "name": "addr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4209,
                                  "src": "3751:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4218,
                                "name": "toHexString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4103,
                                  4186,
                                  4206
                                ],
                                "referencedDeclaration": 4206,
                                "src": "3739:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$",
                                  "typeString": "function (address) pure returns (string memory)"
                                }
                              },
                              "id": 4220,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3739:17:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3733:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 4216,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3733:5:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3733:24:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3711:46:18"
                      },
                      {
                        "assignments": [
                          4224
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4224,
                            "mutability": "mutable",
                            "name": "hashValue",
                            "nameLocation": "3850:9:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4270,
                            "src": "3842:17:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4223,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3842:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4225,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3842:17:18"
                      },
                      {
                        "AST": {
                          "nativeSrc": "3894:78:18",
                          "nodeType": "YulBlock",
                          "src": "3894:78:18",
                          "statements": [
                            {
                              "nativeSrc": "3908:54:18",
                              "nodeType": "YulAssignment",
                              "src": "3908:54:18",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3925:2:18",
                                    "nodeType": "YulLiteral",
                                    "src": "3925:2:18",
                                    "type": "",
                                    "value": "96"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "buffer",
                                            "nativeSrc": "3943:6:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "3943:6:18"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "3951:4:18",
                                            "nodeType": "YulLiteral",
                                            "src": "3951:4:18",
                                            "type": "",
                                            "value": "0x22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "3939:3:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "3939:3:18"
                                        },
                                        "nativeSrc": "3939:17:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "3939:17:18"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "3958:2:18",
                                        "nodeType": "YulLiteral",
                                        "src": "3958:2:18",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "keccak256",
                                      "nativeSrc": "3929:9:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "3929:9:18"
                                    },
                                    "nativeSrc": "3929:32:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3929:32:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nativeSrc": "3921:3:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "3921:3:18"
                                },
                                "nativeSrc": "3921:41:18",
                                "nodeType": "YulFunctionCall",
                                "src": "3921:41:18"
                              },
                              "variableNames": [
                                {
                                  "name": "hashValue",
                                  "nativeSrc": "3908:9:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "3908:9:18"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 4215,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3943:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4224,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3908:9:18",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 4226,
                        "nodeType": "InlineAssembly",
                        "src": "3869:103:18"
                      },
                      {
                        "body": {
                          "id": 4263,
                          "nodeType": "Block",
                          "src": "4015:291:18",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 4250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4241,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4239,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4237,
                                      "name": "hashValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4224,
                                      "src": "4121:9:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "hexValue": "307866",
                                      "id": 4238,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4133:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_15_by_1",
                                        "typeString": "int_const 15"
                                      },
                                      "value": "0xf"
                                    },
                                    "src": "4121:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "37",
                                    "id": 4240,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4139:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_7_by_1",
                                      "typeString": "int_const 7"
                                    },
                                    "value": "7"
                                  },
                                  "src": "4121:19:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 4249,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 4244,
                                          "name": "buffer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4215,
                                          "src": "4150:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 4246,
                                        "indexExpression": {
                                          "id": 4245,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4228,
                                          "src": "4157:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4150:9:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 4243,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4144:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 4242,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4144:5:18",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4247,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4144:16:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "3936",
                                    "id": 4248,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4163:2:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    "value": "96"
                                  },
                                  "src": "4144:21:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "4121:44:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4258,
                              "nodeType": "IfStatement",
                              "src": "4117:150:18",
                              "trueBody": {
                                "id": 4257,
                                "nodeType": "Block",
                                "src": "4167:100:18",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4255,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 4251,
                                          "name": "buffer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4215,
                                          "src": "4235:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 4253,
                                        "indexExpression": {
                                          "id": 4252,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4228,
                                          "src": "4242:1:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4235:9:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "^=",
                                      "rightHandSide": {
                                        "hexValue": "30783230",
                                        "id": 4254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4248:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "0x20"
                                      },
                                      "src": "4235:17:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "id": 4256,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4235:17:18"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 4261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4259,
                                  "name": "hashValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4224,
                                  "src": "4280:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": ">>=",
                                "rightHandSide": {
                                  "hexValue": "34",
                                  "id": 4260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4294:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "4280:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4262,
                              "nodeType": "ExpressionStatement",
                              "src": "4280:15:18"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4231,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4228,
                            "src": "4003:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 4232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4007:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4003:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4264,
                        "initializationExpression": {
                          "assignments": [
                            4228
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4228,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "3995:1:18",
                              "nodeType": "VariableDeclaration",
                              "scope": 4264,
                              "src": "3987:9:18",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4227,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3987:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4230,
                          "initialValue": {
                            "hexValue": "3431",
                            "id": 4229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3999:2:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_41_by_1",
                              "typeString": "int_const 41"
                            },
                            "value": "41"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3987:14:18"
                        },
                        "isSimpleCounterLoop": false,
                        "loopExpression": {
                          "expression": {
                            "id": 4235,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "--",
                            "prefix": true,
                            "src": "4010:3:18",
                            "subExpression": {
                              "id": 4234,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4228,
                              "src": "4012:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4236,
                          "nodeType": "ExpressionStatement",
                          "src": "4010:3:18"
                        },
                        "nodeType": "ForStatement",
                        "src": "3982:324:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4267,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4215,
                              "src": "4329:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4322:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 4265,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "4322:6:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4322:14:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 4213,
                        "id": 4269,
                        "nodeType": "Return",
                        "src": "4315:21:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4207,
                    "nodeType": "StructuredDocumentation",
                    "src": "3450:165:18",
                    "text": " @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55."
                  },
                  "id": 4271,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toChecksumHexString",
                  "nameLocation": "3629:19:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4210,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4209,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "3657:4:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4271,
                        "src": "3649:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3649:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3648:14:18"
                  },
                  "returnParameters": {
                    "id": 4213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4212,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4271,
                        "src": "3686:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4211,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3686:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3685:15:18"
                  },
                  "scope": 5345,
                  "src": "3620:723:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4307,
                    "nodeType": "Block",
                    "src": "4498:104:18",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4283,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4274,
                                    "src": "4521:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4282,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4515:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4281,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4515:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4284,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4515:8:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4524:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4515:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4288,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4276,
                                    "src": "4540:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4287,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4534:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4286,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4534:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4534:8:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4543:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4534:15:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4515:34:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "id": 4304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 4295,
                                      "name": "a",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4274,
                                      "src": "4569:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 4294,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4563:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 4293,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4563:5:18",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4296,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4563:8:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 4292,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "4553:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 4297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4553:19:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 4301,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4276,
                                      "src": "4592:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 4300,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4586:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 4299,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4586:5:18",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4586:8:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 4298,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "4576:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 4303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4576:19:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "src": "4553:42:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4515:80:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4280,
                        "id": 4306,
                        "nodeType": "Return",
                        "src": "4508:87:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4272,
                    "nodeType": "StructuredDocumentation",
                    "src": "4349:66:18",
                    "text": " @dev Returns true if the two strings are equal."
                  },
                  "id": 4308,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "equal",
                  "nameLocation": "4429:5:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4274,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "4449:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4308,
                        "src": "4435:15:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4273,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4435:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4276,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "4466:1:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4308,
                        "src": "4452:15:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4275,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4452:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4434:34:18"
                  },
                  "returnParameters": {
                    "id": 4280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4279,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4308,
                        "src": "4492:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4278,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4492:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4491:6:18"
                  },
                  "scope": 5345,
                  "src": "4420:182:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4326,
                    "nodeType": "Block",
                    "src": "4899:64:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4317,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4311,
                              "src": "4926:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4933:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4321,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4311,
                                    "src": "4942:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4320,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4936:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4319,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4936:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4936:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4949:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "4936:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4316,
                            "name": "parseUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4327,
                              4358
                            ],
                            "referencedDeclaration": 4358,
                            "src": "4916:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 4324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4916:40:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4315,
                        "id": 4325,
                        "nodeType": "Return",
                        "src": "4909:47:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4309,
                    "nodeType": "StructuredDocumentation",
                    "src": "4608:214:18",
                    "text": " @dev Parse a decimal string and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"
                  },
                  "id": 4327,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseUint",
                  "nameLocation": "4836:9:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4312,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4311,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "4860:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4327,
                        "src": "4846:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4310,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "4846:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4845:21:18"
                  },
                  "returnParameters": {
                    "id": 4315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4314,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4327,
                        "src": "4890:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4890:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4889:9:18"
                  },
                  "scope": 5345,
                  "src": "4827:136:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4357,
                    "nodeType": "Block",
                    "src": "5368:153:18",
                    "statements": [
                      {
                        "assignments": [
                          4340,
                          4342
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4340,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5384:7:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4357,
                            "src": "5379:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4339,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5379:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4342,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "5401:5:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4357,
                            "src": "5393:13:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4341,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5393:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4348,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4344,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4330,
                              "src": "5423:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 4345,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4332,
                              "src": "5430:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4346,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4334,
                              "src": "5437:3:18",
                              "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"
                              }
                            ],
                            "id": 4343,
                            "name": "tryParseUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4379,
                              4416
                            ],
                            "referencedDeclaration": 4416,
                            "src": "5410:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 4347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5410:31:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5378:63:18"
                      },
                      {
                        "condition": {
                          "id": 4350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5455:8:18",
                          "subExpression": {
                            "id": 4349,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4340,
                            "src": "5456:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4354,
                        "nodeType": "IfStatement",
                        "src": "5451:41:18",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4351,
                              "name": "StringsInvalidChar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4006,
                              "src": "5472:18:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5472:20:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4353,
                          "nodeType": "RevertStatement",
                          "src": "5465:27:18"
                        }
                      },
                      {
                        "expression": {
                          "id": 4355,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4342,
                          "src": "5509:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4338,
                        "id": 4356,
                        "nodeType": "Return",
                        "src": "5502:12:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4328,
                    "nodeType": "StructuredDocumentation",
                    "src": "4969:294:18",
                    "text": " @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"
                  },
                  "id": 4358,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseUint",
                  "nameLocation": "5277:9:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4330,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "5301:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4358,
                        "src": "5287:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4329,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5287:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4332,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "5316:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4358,
                        "src": "5308:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4331,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5308:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4334,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "5331:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4358,
                        "src": "5323:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5323:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5286:49:18"
                  },
                  "returnParameters": {
                    "id": 4338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4337,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4358,
                        "src": "5359:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5359:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5358:9:18"
                  },
                  "scope": 5345,
                  "src": "5268:253:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4378,
                    "nodeType": "Block",
                    "src": "5842:83:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4369,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4361,
                              "src": "5888:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5895:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4373,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4361,
                                    "src": "5904:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5898:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4371,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5898:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5898:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5911:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "5898:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4368,
                            "name": "_tryParseUintUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4486,
                            "src": "5859:28:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 4376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5859:59:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 4367,
                        "id": 4377,
                        "nodeType": "Return",
                        "src": "5852:66:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4359,
                    "nodeType": "StructuredDocumentation",
                    "src": "5527:215:18",
                    "text": " @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."
                  },
                  "id": 4379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseUint",
                  "nameLocation": "5756:12:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4361,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "5783:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4379,
                        "src": "5769:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4360,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5769:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5768:21:18"
                  },
                  "returnParameters": {
                    "id": 4367,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4364,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "5818:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4379,
                        "src": "5813:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4363,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5813:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4366,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5835:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4379,
                        "src": "5827:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4365,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5827:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5812:29:18"
                  },
                  "scope": 5345,
                  "src": "5747:178:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4415,
                    "nodeType": "Block",
                    "src": "6327:144:18",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4393,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4386,
                              "src": "6341:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4396,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4382,
                                    "src": "6353:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4395,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6347:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4394,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6347:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6347:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "6360:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "6347:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6341:25:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4400,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4384,
                              "src": "6370:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 4401,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4386,
                              "src": "6378:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6370:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6341:40:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4408,
                        "nodeType": "IfStatement",
                        "src": "6337:63:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 4404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6391:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "30",
                                "id": 4405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6398:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 4406,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6390:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                              "typeString": "tuple(bool,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 4392,
                          "id": 4407,
                          "nodeType": "Return",
                          "src": "6383:17:18"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4410,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4382,
                              "src": "6446:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 4411,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4384,
                              "src": "6453:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4412,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4386,
                              "src": "6460:3:18",
                              "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"
                              }
                            ],
                            "id": 4409,
                            "name": "_tryParseUintUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4486,
                            "src": "6417:28:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 4413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6417:47:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 4392,
                        "id": 4414,
                        "nodeType": "Return",
                        "src": "6410:54:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4380,
                    "nodeType": "StructuredDocumentation",
                    "src": "5931:238:18",
                    "text": " @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character.\n NOTE: This function will revert if the result does not fit in a `uint256`."
                  },
                  "id": 4416,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseUint",
                  "nameLocation": "6183:12:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4382,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "6219:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4416,
                        "src": "6205:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4381,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6205:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4384,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "6242:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4416,
                        "src": "6234:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4383,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6234:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4386,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "6265:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4416,
                        "src": "6257:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6257:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6195:79:18"
                  },
                  "returnParameters": {
                    "id": 4392,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4389,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "6303:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4416,
                        "src": "6298:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4388,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6298:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4391,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "6320:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4416,
                        "src": "6312:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4390,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6312:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6297:29:18"
                  },
                  "scope": 5345,
                  "src": "6174:297:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4485,
                    "nodeType": "Block",
                    "src": "6874:347:18",
                    "statements": [
                      {
                        "assignments": [
                          4431
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4431,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "6897:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4485,
                            "src": "6884:19:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4430,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6884:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4436,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4434,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4419,
                              "src": "6912:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6906:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 4432,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6906:5:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6906:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6884:34:18"
                      },
                      {
                        "assignments": [
                          4438
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4438,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "6937:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4485,
                            "src": "6929:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4437,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6929:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4440,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 4439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6946:1:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6929:18:18"
                      },
                      {
                        "body": {
                          "id": 4479,
                          "nodeType": "Block",
                          "src": "6995:189:18",
                          "statements": [
                            {
                              "assignments": [
                                4452
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4452,
                                  "mutability": "mutable",
                                  "name": "chr",
                                  "nameLocation": "7015:3:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4479,
                                  "src": "7009:9:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "typeName": {
                                    "id": 4451,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7009:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4462,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 4457,
                                            "name": "buffer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4431,
                                            "src": "7064:6:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          {
                                            "id": 4458,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4442,
                                            "src": "7072:1:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4456,
                                          "name": "_unsafeReadBytesOffset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5344,
                                          "src": "7041:22:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 4459,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7041:33:18",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 4455,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7034:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 4454,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7034:6:18",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4460,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7034:41:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 4453,
                                  "name": "_tryParseChr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5166,
                                  "src": "7021:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$",
                                    "typeString": "function (bytes1) pure returns (uint8)"
                                  }
                                },
                                "id": 4461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7021:55:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7009:67:18"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 4465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4463,
                                  "name": "chr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4452,
                                  "src": "7094:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "39",
                                  "id": 4464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7100:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_9_by_1",
                                    "typeString": "int_const 9"
                                  },
                                  "value": "9"
                                },
                                "src": "7094:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4470,
                              "nodeType": "IfStatement",
                              "src": "7090:30:18",
                              "trueBody": {
                                "expression": {
                                  "components": [
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 4466,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7111:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    {
                                      "hexValue": "30",
                                      "id": 4467,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7118:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "id": 4468,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7110:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                    "typeString": "tuple(bool,int_const 0)"
                                  }
                                },
                                "functionReturnParameters": 4429,
                                "id": 4469,
                                "nodeType": "Return",
                                "src": "7103:17:18"
                              }
                            },
                            {
                              "expression": {
                                "id": 4473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4471,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4438,
                                  "src": "7134:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "*=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 4472,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7144:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "7134:12:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4474,
                              "nodeType": "ExpressionStatement",
                              "src": "7134:12:18"
                            },
                            {
                              "expression": {
                                "id": 4477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4475,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4438,
                                  "src": "7160:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 4476,
                                  "name": "chr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4452,
                                  "src": "7170:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "7160:13:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4478,
                              "nodeType": "ExpressionStatement",
                              "src": "7160:13:18"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4445,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4442,
                            "src": "6981:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 4446,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4423,
                            "src": "6985:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6981:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4480,
                        "initializationExpression": {
                          "assignments": [
                            4442
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4442,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "6970:1:18",
                              "nodeType": "VariableDeclaration",
                              "scope": 4480,
                              "src": "6962:9:18",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4441,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6962:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4444,
                          "initialValue": {
                            "id": 4443,
                            "name": "begin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4421,
                            "src": "6974:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6962:17:18"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 4449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "6990:3:18",
                            "subExpression": {
                              "id": 4448,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4442,
                              "src": "6992:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4450,
                          "nodeType": "ExpressionStatement",
                          "src": "6990:3:18"
                        },
                        "nodeType": "ForStatement",
                        "src": "6957:227:18"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "74727565",
                              "id": 4481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7201:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "id": 4482,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4438,
                              "src": "7207:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4483,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "7200:14:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 4429,
                        "id": 4484,
                        "nodeType": "Return",
                        "src": "7193:21:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4417,
                    "nodeType": "StructuredDocumentation",
                    "src": "6477:224:18",
                    "text": " @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."
                  },
                  "id": 4486,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tryParseUintUncheckedBounds",
                  "nameLocation": "6715:28:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4419,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "6767:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4486,
                        "src": "6753:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4418,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6753:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4421,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "6790:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4486,
                        "src": "6782:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4420,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6782:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4423,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "6813:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4486,
                        "src": "6805:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6805:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6743:79:18"
                  },
                  "returnParameters": {
                    "id": 4429,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4426,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "6850:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4486,
                        "src": "6845:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4425,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6845:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4428,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "6867:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4486,
                        "src": "6859:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4427,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6859:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6844:29:18"
                  },
                  "scope": 5345,
                  "src": "6706:515:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4504,
                    "nodeType": "Block",
                    "src": "7518:63:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4495,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4489,
                              "src": "7544:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7551:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4499,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4489,
                                    "src": "7560:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7554:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4497,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7554:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7554:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "7567:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "7554:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4494,
                            "name": "parseInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4505,
                              4536
                            ],
                            "referencedDeclaration": 4536,
                            "src": "7535:8:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (int256)"
                            }
                          },
                          "id": 4502,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7535:39:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4493,
                        "id": 4503,
                        "nodeType": "Return",
                        "src": "7528:46:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4487,
                    "nodeType": "StructuredDocumentation",
                    "src": "7227:216:18",
                    "text": " @dev Parse a decimal string and returns the value as a `int256`.\n Requirements:\n - The string must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."
                  },
                  "id": 4505,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseInt",
                  "nameLocation": "7457:8:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4490,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4489,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "7480:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4505,
                        "src": "7466:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4488,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7466:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7465:21:18"
                  },
                  "returnParameters": {
                    "id": 4493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4492,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4505,
                        "src": "7510:6:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4491,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7510:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7509:8:18"
                  },
                  "scope": 5345,
                  "src": "7448:133:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4535,
                    "nodeType": "Block",
                    "src": "7986:151:18",
                    "statements": [
                      {
                        "assignments": [
                          4518,
                          4520
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4518,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "8002:7:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4535,
                            "src": "7997:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4517,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7997:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4520,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "8018:5:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4535,
                            "src": "8011:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 4519,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8011:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4526,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4522,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4508,
                              "src": "8039:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 4523,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4510,
                              "src": "8046:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4524,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4512,
                              "src": "8053:3:18",
                              "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"
                              }
                            ],
                            "id": 4521,
                            "name": "tryParseInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4557,
                              4599
                            ],
                            "referencedDeclaration": 4599,
                            "src": "8027:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,int256)"
                            }
                          },
                          "id": 4525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8027:30:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                            "typeString": "tuple(bool,int256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7996:61:18"
                      },
                      {
                        "condition": {
                          "id": 4528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8071:8:18",
                          "subExpression": {
                            "id": 4527,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4518,
                            "src": "8072:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4532,
                        "nodeType": "IfStatement",
                        "src": "8067:41:18",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4529,
                              "name": "StringsInvalidChar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4006,
                              "src": "8088:18:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8088:20:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4531,
                          "nodeType": "RevertStatement",
                          "src": "8081:27:18"
                        }
                      },
                      {
                        "expression": {
                          "id": 4533,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4520,
                          "src": "8125:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 4516,
                        "id": 4534,
                        "nodeType": "Return",
                        "src": "8118:12:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4506,
                    "nodeType": "StructuredDocumentation",
                    "src": "7587:296:18",
                    "text": " @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."
                  },
                  "id": 4536,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseInt",
                  "nameLocation": "7897:8:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4508,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "7920:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4536,
                        "src": "7906:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4507,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7906:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4510,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "7935:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4536,
                        "src": "7927:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4509,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7927:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4512,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "7950:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4536,
                        "src": "7942:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4511,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7942:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7905:49:18"
                  },
                  "returnParameters": {
                    "id": 4516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4515,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4536,
                        "src": "7978:6:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4514,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7978:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7977:8:18"
                  },
                  "scope": 5345,
                  "src": "7888:249:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4556,
                    "nodeType": "Block",
                    "src": "8528:82:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4547,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4539,
                              "src": "8573:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8580:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4551,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4539,
                                    "src": "8589:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8583:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4549,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8583:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8583:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8596:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "8583:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4546,
                            "name": "_tryParseIntUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4720,
                            "src": "8545:27:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,int256)"
                            }
                          },
                          "id": 4554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8545:58:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                            "typeString": "tuple(bool,int256)"
                          }
                        },
                        "functionReturnParameters": 4545,
                        "id": 4555,
                        "nodeType": "Return",
                        "src": "8538:65:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4537,
                    "nodeType": "StructuredDocumentation",
                    "src": "8143:287:18",
                    "text": " @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."
                  },
                  "id": 4557,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseInt",
                  "nameLocation": "8444:11:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4539,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "8470:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4557,
                        "src": "8456:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4538,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8456:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8455:21:18"
                  },
                  "returnParameters": {
                    "id": 4545,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4542,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "8505:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4557,
                        "src": "8500:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4541,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8500:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4544,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "8521:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4557,
                        "src": "8514:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4543,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8514:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8499:28:18"
                  },
                  "scope": 5345,
                  "src": "8435:175:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 4562,
                  "mutability": "constant",
                  "name": "ABS_MIN_INT256",
                  "nameLocation": "8641:14:18",
                  "nodeType": "VariableDeclaration",
                  "scope": 5345,
                  "src": "8616:50:18",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4558,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8616:7:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    },
                    "id": 4561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "32",
                      "id": 4559,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8658:1:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "hexValue": "323535",
                      "id": 4560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8663:3:18",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "8658:8:18",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9968"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4598,
                    "nodeType": "Block",
                    "src": "9132:143:18",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4576,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4569,
                              "src": "9146:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4579,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4565,
                                    "src": "9158:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9152:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4577,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9152:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9152:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "9165:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "9152:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9146:25:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4583,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4567,
                              "src": "9175:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 4584,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4569,
                              "src": "9183:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9175:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "9146:40:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4591,
                        "nodeType": "IfStatement",
                        "src": "9142:63:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 4587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9196:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "30",
                                "id": 4588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9203:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 4589,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "9195:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                              "typeString": "tuple(bool,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 4575,
                          "id": 4590,
                          "nodeType": "Return",
                          "src": "9188:17:18"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4593,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4565,
                              "src": "9250:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 4594,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4567,
                              "src": "9257:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4595,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4569,
                              "src": "9264:3:18",
                              "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"
                              }
                            ],
                            "id": 4592,
                            "name": "_tryParseIntUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4720,
                            "src": "9222:27:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,int256)"
                            }
                          },
                          "id": 4596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9222:46:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                            "typeString": "tuple(bool,int256)"
                          }
                        },
                        "functionReturnParameters": 4575,
                        "id": 4597,
                        "nodeType": "Return",
                        "src": "9215:53:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4563,
                    "nodeType": "StructuredDocumentation",
                    "src": "8673:303:18",
                    "text": " @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character or if the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."
                  },
                  "id": 4599,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseInt",
                  "nameLocation": "8990:11:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4570,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4565,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "9025:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4599,
                        "src": "9011:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4564,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9011:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4567,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "9048:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4599,
                        "src": "9040:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4566,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9040:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4569,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "9071:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4599,
                        "src": "9063:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4568,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9063:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9001:79:18"
                  },
                  "returnParameters": {
                    "id": 4575,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4572,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "9109:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4599,
                        "src": "9104:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4571,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9104:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4574,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9125:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4599,
                        "src": "9118:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4573,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9118:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9103:28:18"
                  },
                  "scope": 5345,
                  "src": "8981:294:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4719,
                    "nodeType": "Block",
                    "src": "9675:812:18",
                    "statements": [
                      {
                        "assignments": [
                          4614
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4614,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "9698:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4719,
                            "src": "9685:19:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4613,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9685:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4619,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4617,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4602,
                              "src": "9713:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9707:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 4615,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9707:5:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9707:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9685:34:18"
                      },
                      {
                        "assignments": [
                          4621
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4621,
                            "mutability": "mutable",
                            "name": "sign",
                            "nameLocation": "9783:4:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4719,
                            "src": "9776:11:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            },
                            "typeName": {
                              "id": 4620,
                              "name": "bytes1",
                              "nodeType": "ElementaryTypeName",
                              "src": "9776:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4637,
                        "initialValue": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4622,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4604,
                              "src": "9790:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 4623,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4606,
                              "src": "9799:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9790:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 4632,
                                    "name": "buffer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4614,
                                    "src": "9847:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 4633,
                                    "name": "begin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4604,
                                    "src": "9855:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4631,
                                  "name": "_unsafeReadBytesOffset",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5344,
                                  "src": "9824:22:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                  }
                                },
                                "id": 4634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9824:37:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 4630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9817:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 4629,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "9817:6:18",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4635,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9817:45:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "id": 4636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "9790:72:18",
                          "trueExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 4627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9812: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"
                                }
                              ],
                              "id": 4626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9805:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 4625,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "9805:6:18",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9805:9:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9776:86:18"
                      },
                      {
                        "assignments": [
                          4639
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4639,
                            "mutability": "mutable",
                            "name": "positiveSign",
                            "nameLocation": "9948:12:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4719,
                            "src": "9943:17:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4638,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9943:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4646,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          },
                          "id": 4645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4640,
                            "name": "sign",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4621,
                            "src": "9963:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "2b",
                                "id": 4643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9978:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8",
                                  "typeString": "literal_string \"+\""
                                },
                                "value": "+"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8",
                                  "typeString": "literal_string \"+\""
                                }
                              ],
                              "id": 4642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9971:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 4641,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "9971:6:18",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9971:11:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "9963:19:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9943:39:18"
                      },
                      {
                        "assignments": [
                          4648
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4648,
                            "mutability": "mutable",
                            "name": "negativeSign",
                            "nameLocation": "9997:12:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4719,
                            "src": "9992:17:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4647,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9992:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4655,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          },
                          "id": 4654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4649,
                            "name": "sign",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4621,
                            "src": "10012:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "2d",
                                "id": 4652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10027:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
                                  "typeString": "literal_string \"-\""
                                },
                                "value": "-"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561",
                                  "typeString": "literal_string \"-\""
                                }
                              ],
                              "id": 4651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10020:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes1_$",
                                "typeString": "type(bytes1)"
                              },
                              "typeName": {
                                "id": 4650,
                                "name": "bytes1",
                                "nodeType": "ElementaryTypeName",
                                "src": "10020:6:18",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10020:11:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "10012:19:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9992:39:18"
                      },
                      {
                        "assignments": [
                          4657
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4657,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "10049:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4719,
                            "src": "10041:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4656,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10041:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4664,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 4660,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4658,
                                    "name": "positiveSign",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4639,
                                    "src": "10059:12:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "id": 4659,
                                    "name": "negativeSign",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4648,
                                    "src": "10075:12:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "10059:28:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 4661,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10058:30:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "10089:6:18",
                            "memberName": "toUint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9695,
                            "src": "10058:37:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$",
                              "typeString": "function (bool) pure returns (uint256)"
                            }
                          },
                          "id": 4663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10058:39:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10041:56:18"
                      },
                      {
                        "assignments": [
                          4666,
                          4668
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4666,
                            "mutability": "mutable",
                            "name": "absSuccess",
                            "nameLocation": "10114:10:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4719,
                            "src": "10109:15:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4665,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "10109:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4668,
                            "mutability": "mutable",
                            "name": "absValue",
                            "nameLocation": "10134:8:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4719,
                            "src": "10126:16:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4667,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10126:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4676,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4670,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4602,
                              "src": "10159:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4671,
                                "name": "begin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4604,
                                "src": "10166:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 4672,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4657,
                                "src": "10174:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10166:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4674,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4606,
                              "src": "10182:3:18",
                              "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"
                              }
                            ],
                            "id": 4669,
                            "name": "tryParseUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4379,
                              4416
                            ],
                            "referencedDeclaration": 4416,
                            "src": "10146:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 4675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10146:40:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10108:78:18"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4677,
                            "name": "absSuccess",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4666,
                            "src": "10201:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4678,
                              "name": "absValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4668,
                              "src": "10215:8:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 4679,
                              "name": "ABS_MIN_INT256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4562,
                              "src": "10226:14:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10215:25:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10201:39:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 4703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4697,
                                "name": "absSuccess",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4666,
                                "src": "10343:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "id": 4698,
                                "name": "negativeSign",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4648,
                                "src": "10357:12:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10343:26:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4700,
                                "name": "absValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4668,
                                "src": "10373:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 4701,
                                "name": "ABS_MIN_INT256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4562,
                                "src": "10385:14:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10373:26:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "10343:56:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "expression": {
                              "components": [
                                {
                                  "hexValue": "66616c7365",
                                  "id": 4713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10471:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "hexValue": "30",
                                  "id": 4714,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10478:1:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "id": 4715,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10470:10:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                "typeString": "tuple(bool,int_const 0)"
                              }
                            },
                            "functionReturnParameters": 4612,
                            "id": 4716,
                            "nodeType": "Return",
                            "src": "10463:17:18"
                          },
                          "id": 4717,
                          "nodeType": "IfStatement",
                          "src": "10339:141:18",
                          "trueBody": {
                            "id": 4712,
                            "nodeType": "Block",
                            "src": "10401:56:18",
                            "statements": [
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "hexValue": "74727565",
                                      "id": 4704,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10423:4:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 4707,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "10434:6:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int256_$",
                                              "typeString": "type(int256)"
                                            },
                                            "typeName": {
                                              "id": 4706,
                                              "name": "int256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "10434:6:18",
                                              "typeDescriptions": {}
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_type$_t_int256_$",
                                              "typeString": "type(int256)"
                                            }
                                          ],
                                          "id": 4705,
                                          "name": "type",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -27,
                                          "src": "10429:4:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 4708,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10429:12:18",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_meta_type_t_int256",
                                          "typeString": "type(int256)"
                                        }
                                      },
                                      "id": 4709,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "10442:3:18",
                                      "memberName": "min",
                                      "nodeType": "MemberAccess",
                                      "src": "10429:16:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 4710,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "10422:24:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                                    "typeString": "tuple(bool,int256)"
                                  }
                                },
                                "functionReturnParameters": 4612,
                                "id": 4711,
                                "nodeType": "Return",
                                "src": "10415:31:18"
                              }
                            ]
                          }
                        },
                        "id": 4718,
                        "nodeType": "IfStatement",
                        "src": "10197:283:18",
                        "trueBody": {
                          "id": 4696,
                          "nodeType": "Block",
                          "src": "10242:91:18",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "hexValue": "74727565",
                                    "id": 4682,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10264:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "true"
                                  },
                                  {
                                    "condition": {
                                      "id": 4683,
                                      "name": "negativeSign",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4648,
                                      "src": "10270:12:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "arguments": [
                                        {
                                          "id": 4691,
                                          "name": "absValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4668,
                                          "src": "10312:8:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 4690,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10305:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 4689,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10305:6:18",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 4692,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10305:16:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "id": 4693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "10270:51:18",
                                    "trueExpression": {
                                      "id": 4688,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "-",
                                      "prefix": true,
                                      "src": "10285:17:18",
                                      "subExpression": {
                                        "arguments": [
                                          {
                                            "id": 4686,
                                            "name": "absValue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4668,
                                            "src": "10293:8:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4685,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10286:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int256_$",
                                            "typeString": "type(int256)"
                                          },
                                          "typeName": {
                                            "id": 4684,
                                            "name": "int256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10286:6:18",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4687,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10286:16:18",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 4694,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10263:59:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_int256_$",
                                  "typeString": "tuple(bool,int256)"
                                }
                              },
                              "functionReturnParameters": 4612,
                              "id": 4695,
                              "nodeType": "Return",
                              "src": "10256:66:18"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4600,
                    "nodeType": "StructuredDocumentation",
                    "src": "9281:223:18",
                    "text": " @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."
                  },
                  "id": 4720,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tryParseIntUncheckedBounds",
                  "nameLocation": "9518:27:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4602,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "9569:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4720,
                        "src": "9555:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4601,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9555:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4604,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "9592:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4720,
                        "src": "9584:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9584:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4606,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "9615:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4720,
                        "src": "9607:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9607:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9545:79:18"
                  },
                  "returnParameters": {
                    "id": 4612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4609,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "9652:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4720,
                        "src": "9647:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4608,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9647:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4611,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9668:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4720,
                        "src": "9661:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 4610,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9661:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9646:28:18"
                  },
                  "scope": 5345,
                  "src": "9509:978:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4738,
                    "nodeType": "Block",
                    "src": "10832:67:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4729,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4723,
                              "src": "10862:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10869:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4733,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4723,
                                    "src": "10878:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10872:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4731,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10872:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10872:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "10885:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "10872:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4728,
                            "name": "parseHexUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4739,
                              4770
                            ],
                            "referencedDeclaration": 4770,
                            "src": "10849:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 4736,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10849:43:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4727,
                        "id": 4737,
                        "nodeType": "Return",
                        "src": "10842:50:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4721,
                    "nodeType": "StructuredDocumentation",
                    "src": "10493:259:18",
                    "text": " @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."
                  },
                  "id": 4739,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseHexUint",
                  "nameLocation": "10766:12:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4723,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "10793:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4739,
                        "src": "10779:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4722,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10779:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10778:21:18"
                  },
                  "returnParameters": {
                    "id": 4727,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4726,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4739,
                        "src": "10823:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4725,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10823:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10822:9:18"
                  },
                  "scope": 5345,
                  "src": "10757:142:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4769,
                    "nodeType": "Block",
                    "src": "11320:156:18",
                    "statements": [
                      {
                        "assignments": [
                          4752,
                          4754
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4752,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "11336:7:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4769,
                            "src": "11331:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4751,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "11331:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4754,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "11353:5:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4769,
                            "src": "11345:13:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4753,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11345:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4760,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4756,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4742,
                              "src": "11378:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 4757,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4744,
                              "src": "11385:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4758,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4746,
                              "src": "11392:3:18",
                              "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"
                              }
                            ],
                            "id": 4755,
                            "name": "tryParseHexUint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4791,
                              4828
                            ],
                            "referencedDeclaration": 4828,
                            "src": "11362:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 4759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11362:34:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11330:66:18"
                      },
                      {
                        "condition": {
                          "id": 4762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "11410:8:18",
                          "subExpression": {
                            "id": 4761,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4752,
                            "src": "11411:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4766,
                        "nodeType": "IfStatement",
                        "src": "11406:41:18",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4763,
                              "name": "StringsInvalidChar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4006,
                              "src": "11427:18:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11427:20:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4765,
                          "nodeType": "RevertStatement",
                          "src": "11420:27:18"
                        }
                      },
                      {
                        "expression": {
                          "id": 4767,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4754,
                          "src": "11464:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4750,
                        "id": 4768,
                        "nodeType": "Return",
                        "src": "11457:12:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4740,
                    "nodeType": "StructuredDocumentation",
                    "src": "10905:307:18",
                    "text": " @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."
                  },
                  "id": 4770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseHexUint",
                  "nameLocation": "11226:12:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4742,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "11253:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4770,
                        "src": "11239:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4741,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11239:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4744,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "11268:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4770,
                        "src": "11260:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4743,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11260:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4746,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "11283:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4770,
                        "src": "11275:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4745,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11275:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11238:49:18"
                  },
                  "returnParameters": {
                    "id": 4750,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4749,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4770,
                        "src": "11311:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4748,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11311:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11310:9:18"
                  },
                  "scope": 5345,
                  "src": "11217:259:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4790,
                    "nodeType": "Block",
                    "src": "11803:86:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4781,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4773,
                              "src": "11852:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11859:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4785,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4773,
                                    "src": "11868:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4784,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11862:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4783,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11862:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11862:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11875:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "11862:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4780,
                            "name": "_tryParseHexUintUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4931,
                            "src": "11820:31:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 4788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11820:62:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 4779,
                        "id": 4789,
                        "nodeType": "Return",
                        "src": "11813:69:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4771,
                    "nodeType": "StructuredDocumentation",
                    "src": "11482:218:18",
                    "text": " @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."
                  },
                  "id": 4791,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseHexUint",
                  "nameLocation": "11714:15:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4773,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "11744:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4791,
                        "src": "11730:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4772,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11730:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11729:21:18"
                  },
                  "returnParameters": {
                    "id": 4779,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4776,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "11779:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4791,
                        "src": "11774:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4775,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11774:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4778,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "11796:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4791,
                        "src": "11788:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4777,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11788:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11773:29:18"
                  },
                  "scope": 5345,
                  "src": "11705:184:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4827,
                    "nodeType": "Block",
                    "src": "12297:147:18",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4805,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4798,
                              "src": "12311:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4808,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4794,
                                    "src": "12323:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12317:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4806,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12317:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12317:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12330:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "12317:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12311:25:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4812,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4796,
                              "src": "12340:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 4813,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4798,
                              "src": "12348:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12340:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12311:40:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4820,
                        "nodeType": "IfStatement",
                        "src": "12307:63:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 4816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12361:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "30",
                                "id": 4817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12368:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 4818,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12360:10:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                              "typeString": "tuple(bool,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 4804,
                          "id": 4819,
                          "nodeType": "Return",
                          "src": "12353:17:18"
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4822,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4794,
                              "src": "12419:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 4823,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4796,
                              "src": "12426:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4824,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4798,
                              "src": "12433:3:18",
                              "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"
                              }
                            ],
                            "id": 4821,
                            "name": "_tryParseHexUintUncheckedBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4931,
                            "src": "12387:31:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 4825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12387:50:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 4804,
                        "id": 4826,
                        "nodeType": "Return",
                        "src": "12380:57:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4792,
                    "nodeType": "StructuredDocumentation",
                    "src": "11895:241:18",
                    "text": " @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."
                  },
                  "id": 4828,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseHexUint",
                  "nameLocation": "12150:15:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4799,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4794,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "12189:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4828,
                        "src": "12175:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4793,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12175:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4796,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "12212:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4828,
                        "src": "12204:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4795,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12204:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4798,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "12235:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4828,
                        "src": "12227:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4797,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12227:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12165:79:18"
                  },
                  "returnParameters": {
                    "id": 4804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4801,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "12273:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4828,
                        "src": "12268:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4800,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12268:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4803,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12290:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4828,
                        "src": "12282:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4802,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12282:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12267:29:18"
                  },
                  "scope": 5345,
                  "src": "12141:303:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4930,
                    "nodeType": "Block",
                    "src": "12853:881:18",
                    "statements": [
                      {
                        "assignments": [
                          4843
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4843,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "12876:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4930,
                            "src": "12863:19:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4842,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12863:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4848,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4846,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4831,
                              "src": "12891:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 4845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12885:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 4844,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12885:5:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 4847,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12885:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12863:34:18"
                      },
                      {
                        "assignments": [
                          4850
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4850,
                            "mutability": "mutable",
                            "name": "hasPrefix",
                            "nameLocation": "12950:9:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4930,
                            "src": "12945:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4849,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12945:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4870,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4851,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4835,
                                  "src": "12963:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4852,
                                    "name": "begin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4833,
                                    "src": "12969:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 4853,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12977:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "12969:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12963:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 4856,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12962:17:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            },
                            "id": 4868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 4860,
                                      "name": "buffer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4843,
                                      "src": "13013:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 4861,
                                      "name": "begin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4833,
                                      "src": "13021:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 4859,
                                    "name": "_unsafeReadBytesOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5344,
                                    "src": "12990:22:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 4862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12990:37:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 4858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12983:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes2_$",
                                  "typeString": "type(bytes2)"
                                },
                                "typeName": {
                                  "id": 4857,
                                  "name": "bytes2",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12983:6:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12983:45:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "3078",
                                  "id": 4866,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13039:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                                    "typeString": "literal_string \"0x\""
                                  },
                                  "value": "0x"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                                    "typeString": "literal_string \"0x\""
                                  }
                                ],
                                "id": 4865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "13032:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes2_$",
                                  "typeString": "type(bytes2)"
                                },
                                "typeName": {
                                  "id": 4864,
                                  "name": "bytes2",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13032:6:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13032:12:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "src": "12983:61:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "12962:82:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12945:99:18"
                      },
                      {
                        "assignments": [
                          4872
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4872,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "13133:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4930,
                            "src": "13125:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4871,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13125:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4878,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 4873,
                                "name": "hasPrefix",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4850,
                                "src": "13142:9:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "13152:6:18",
                              "memberName": "toUint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9695,
                              "src": "13142:16:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$",
                                "typeString": "function (bool) pure returns (uint256)"
                              }
                            },
                            "id": 4875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13142:18:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "hexValue": "32",
                            "id": 4876,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13163:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "13142:22:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13125:39:18"
                      },
                      {
                        "assignments": [
                          4880
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4880,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "13183:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4930,
                            "src": "13175:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4879,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13175:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4882,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 4881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13192:1:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13175:18:18"
                      },
                      {
                        "body": {
                          "id": 4924,
                          "nodeType": "Block",
                          "src": "13250:447:18",
                          "statements": [
                            {
                              "assignments": [
                                4896
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4896,
                                  "mutability": "mutable",
                                  "name": "chr",
                                  "nameLocation": "13270:3:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4924,
                                  "src": "13264:9:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "typeName": {
                                    "id": 4895,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13264:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4906,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 4901,
                                            "name": "buffer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4843,
                                            "src": "13319:6:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          {
                                            "id": 4902,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4884,
                                            "src": "13327:1:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 4900,
                                          "name": "_unsafeReadBytesOffset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5344,
                                          "src": "13296:22:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 4903,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13296:33:18",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 4899,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13289:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 4898,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13289:6:18",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4904,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13289:41:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  ],
                                  "id": 4897,
                                  "name": "_tryParseChr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5166,
                                  "src": "13276:12:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$",
                                    "typeString": "function (bytes1) pure returns (uint8)"
                                  }
                                },
                                "id": 4905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13276:55:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13264:67:18"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 4909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4907,
                                  "name": "chr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4896,
                                  "src": "13349:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "3135",
                                  "id": 4908,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13355:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_15_by_1",
                                    "typeString": "int_const 15"
                                  },
                                  "value": "15"
                                },
                                "src": "13349:8:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4914,
                              "nodeType": "IfStatement",
                              "src": "13345:31:18",
                              "trueBody": {
                                "expression": {
                                  "components": [
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 4910,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13367:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    {
                                      "hexValue": "30",
                                      "id": 4911,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13374:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "id": 4912,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13366:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                    "typeString": "tuple(bool,int_const 0)"
                                  }
                                },
                                "functionReturnParameters": 4841,
                                "id": 4913,
                                "nodeType": "Return",
                                "src": "13359:17:18"
                              }
                            },
                            {
                              "expression": {
                                "id": 4917,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4915,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4880,
                                  "src": "13390:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "*=",
                                "rightHandSide": {
                                  "hexValue": "3136",
                                  "id": 4916,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13400:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16_by_1",
                                    "typeString": "int_const 16"
                                  },
                                  "value": "16"
                                },
                                "src": "13390:12:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4918,
                              "nodeType": "ExpressionStatement",
                              "src": "13390:12:18"
                            },
                            {
                              "id": 4923,
                              "nodeType": "UncheckedBlock",
                              "src": "13416:271:18",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4921,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4919,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4880,
                                      "src": "13659:6:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 4920,
                                      "name": "chr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4896,
                                      "src": "13669:3:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "13659:13:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4922,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13659:13:18"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4889,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4884,
                            "src": "13236:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 4890,
                            "name": "end",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4835,
                            "src": "13240:3:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13236:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4925,
                        "initializationExpression": {
                          "assignments": [
                            4884
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4884,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "13216:1:18",
                              "nodeType": "VariableDeclaration",
                              "scope": 4925,
                              "src": "13208:9:18",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4883,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13208:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4888,
                          "initialValue": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4885,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4833,
                              "src": "13220:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "id": 4886,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4872,
                              "src": "13228:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13220:14:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "13208:26:18"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 4893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "13245:3:18",
                            "subExpression": {
                              "id": 4892,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4884,
                              "src": "13247:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4894,
                          "nodeType": "ExpressionStatement",
                          "src": "13245:3:18"
                        },
                        "nodeType": "ForStatement",
                        "src": "13203:494:18"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "74727565",
                              "id": 4926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13714:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "id": 4927,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4880,
                              "src": "13720:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 4928,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "13713:14:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "functionReturnParameters": 4841,
                        "id": 4929,
                        "nodeType": "Return",
                        "src": "13706:21:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4829,
                    "nodeType": "StructuredDocumentation",
                    "src": "12450:227:18",
                    "text": " @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."
                  },
                  "id": 4931,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tryParseHexUintUncheckedBounds",
                  "nameLocation": "12691:31:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4831,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "12746:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4931,
                        "src": "12732:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4830,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12732:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4833,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "12769:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4931,
                        "src": "12761:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4832,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12761:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4835,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "12792:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4931,
                        "src": "12784:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4834,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12784:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12722:79:18"
                  },
                  "returnParameters": {
                    "id": 4841,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4838,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "12829:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4931,
                        "src": "12824:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4837,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12824:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4840,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12846:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4931,
                        "src": "12838:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4839,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12838:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12823:29:18"
                  },
                  "scope": 5345,
                  "src": "12682:1052:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 4949,
                    "nodeType": "Block",
                    "src": "14032:67:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4940,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4934,
                              "src": "14062:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4941,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14069:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4944,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4934,
                                    "src": "14078:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14072:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4942,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14072:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14072:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4946,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "14085:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "14072:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4939,
                            "name": "parseAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4950,
                              4981
                            ],
                            "referencedDeclaration": 4981,
                            "src": "14049:12:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (address)"
                            }
                          },
                          "id": 4947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14049:43:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4938,
                        "id": 4948,
                        "nodeType": "Return",
                        "src": "14042:50:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4932,
                    "nodeType": "StructuredDocumentation",
                    "src": "13740:212:18",
                    "text": " @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`"
                  },
                  "id": 4950,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseAddress",
                  "nameLocation": "13966:12:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4934,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "13993:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4950,
                        "src": "13979:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4933,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "13979:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13978:21:18"
                  },
                  "returnParameters": {
                    "id": 4938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4937,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4950,
                        "src": "14023:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4936,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14023:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14022:9:18"
                  },
                  "scope": 5345,
                  "src": "13957:142:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4980,
                    "nodeType": "Block",
                    "src": "14472:165:18",
                    "statements": [
                      {
                        "assignments": [
                          4963,
                          4965
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4963,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "14488:7:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4980,
                            "src": "14483:12:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4962,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "14483:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 4965,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "14505:5:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 4980,
                            "src": "14497:13:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4964,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "14497:7:18",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4971,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4967,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4953,
                              "src": "14530:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "id": 4968,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4955,
                              "src": "14537:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4969,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4957,
                              "src": "14544:3:18",
                              "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"
                              }
                            ],
                            "id": 4966,
                            "name": "tryParseAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5002,
                              5106
                            ],
                            "referencedDeclaration": 5106,
                            "src": "14514:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,address)"
                            }
                          },
                          "id": 4970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14514:34:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                            "typeString": "tuple(bool,address)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14482:66:18"
                      },
                      {
                        "condition": {
                          "id": 4973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "14562:8:18",
                          "subExpression": {
                            "id": 4972,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4963,
                            "src": "14563:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4977,
                        "nodeType": "IfStatement",
                        "src": "14558:50:18",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4974,
                              "name": "StringsInvalidAddressFormat",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4009,
                              "src": "14579:27:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                "typeString": "function () pure returns (error)"
                              }
                            },
                            "id": 4975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14579:29:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_error",
                              "typeString": "error"
                            }
                          },
                          "id": 4976,
                          "nodeType": "RevertStatement",
                          "src": "14572:36:18"
                        }
                      },
                      {
                        "expression": {
                          "id": 4978,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4965,
                          "src": "14625:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 4961,
                        "id": 4979,
                        "nodeType": "Return",
                        "src": "14618:12:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4951,
                    "nodeType": "StructuredDocumentation",
                    "src": "14105:259:18",
                    "text": " @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`"
                  },
                  "id": 4981,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "parseAddress",
                  "nameLocation": "14378:12:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4958,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4953,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "14405:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4981,
                        "src": "14391:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4952,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14391:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4955,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "14420:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4981,
                        "src": "14412:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4954,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14412:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4957,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "14435:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 4981,
                        "src": "14427:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4956,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14427:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14390:49:18"
                  },
                  "returnParameters": {
                    "id": 4961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4960,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4981,
                        "src": "14463:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4959,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14463:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14462:9:18"
                  },
                  "scope": 5345,
                  "src": "14369:268:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5001,
                    "nodeType": "Block",
                    "src": "14944:70:18",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4992,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4984,
                              "src": "14977:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 4993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14984:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4996,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4984,
                                    "src": "14993:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 4995,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14987:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 4994,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14987:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14987:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 4998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "15000:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "14987:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4991,
                            "name": "tryParseAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5002,
                              5106
                            ],
                            "referencedDeclaration": 5106,
                            "src": "14961:15:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$",
                              "typeString": "function (string memory,uint256,uint256) pure returns (bool,address)"
                            }
                          },
                          "id": 4999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14961:46:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                            "typeString": "tuple(bool,address)"
                          }
                        },
                        "functionReturnParameters": 4990,
                        "id": 5000,
                        "nodeType": "Return",
                        "src": "14954:53:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4982,
                    "nodeType": "StructuredDocumentation",
                    "src": "14643:198:18",
                    "text": " @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n formatted address. See {parseAddress-string} requirements."
                  },
                  "id": 5002,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseAddress",
                  "nameLocation": "14855:15:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4984,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "14885:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5002,
                        "src": "14871:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 4983,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14871:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14870:21:18"
                  },
                  "returnParameters": {
                    "id": 4990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4987,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "14920:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5002,
                        "src": "14915:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4986,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14915:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4989,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "14937:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5002,
                        "src": "14929:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4988,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14929:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14914:29:18"
                  },
                  "scope": 5345,
                  "src": "14846:168:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5105,
                    "nodeType": "Block",
                    "src": "15407:733:18",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5016,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5009,
                              "src": "15421:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5019,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5005,
                                    "src": "15433:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 5018,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15427:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 5017,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15427:5:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5020,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15427:12:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 5021,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "15440:6:18",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "15427:19:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15421:25:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5023,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5007,
                              "src": "15450:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 5024,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5009,
                              "src": "15458:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15450:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15421:40:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5034,
                        "nodeType": "IfStatement",
                        "src": "15417:72:18",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 5027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15471:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5030,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15486: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"
                                    }
                                  ],
                                  "id": 5029,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15478:7:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5028,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15478:7:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15478:10:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 5032,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15470:19:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                              "typeString": "tuple(bool,address)"
                            }
                          },
                          "functionReturnParameters": 5015,
                          "id": 5033,
                          "nodeType": "Return",
                          "src": "15463:26:18"
                        }
                      },
                      {
                        "assignments": [
                          5036
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5036,
                            "mutability": "mutable",
                            "name": "hasPrefix",
                            "nameLocation": "15505:9:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 5105,
                            "src": "15500:14:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 5035,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "15500:4:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5059,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5041,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5037,
                                  "name": "end",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5009,
                                  "src": "15518:3:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5040,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 5038,
                                    "name": "begin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5007,
                                    "src": "15524:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 5039,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15532:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "15524:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15518:15:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 5042,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15517:17:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            },
                            "id": 5057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 5048,
                                          "name": "input",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5005,
                                          "src": "15574:5:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 5047,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "15568:5:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 5046,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15568:5:18",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 5049,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15568:12:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 5050,
                                      "name": "begin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5007,
                                      "src": "15582:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 5045,
                                    "name": "_unsafeReadBytesOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5344,
                                    "src": "15545:22:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5051,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15545:43:18",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 5044,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15538:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes2_$",
                                  "typeString": "type(bytes2)"
                                },
                                "typeName": {
                                  "id": 5043,
                                  "name": "bytes2",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15538:6:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15538:51:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "3078",
                                  "id": 5055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15600:4:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                                    "typeString": "literal_string \"0x\""
                                  },
                                  "value": "0x"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                                    "typeString": "literal_string \"0x\""
                                  }
                                ],
                                "id": 5054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15593:6:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes2_$",
                                  "typeString": "type(bytes2)"
                                },
                                "typeName": {
                                  "id": 5053,
                                  "name": "bytes2",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15593:6:18",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15593:12:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "src": "15538:67:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15517:88:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15500:105:18"
                      },
                      {
                        "assignments": [
                          5061
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5061,
                            "mutability": "mutable",
                            "name": "expectedLength",
                            "nameLocation": "15694:14:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 5105,
                            "src": "15686:22:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5060,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15686:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5069,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "3430",
                            "id": 5062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15711:2:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_40_by_1",
                              "typeString": "int_const 40"
                            },
                            "value": "40"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 5063,
                                  "name": "hasPrefix",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5036,
                                  "src": "15716:9:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 5064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "15726:6:18",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "15716:16:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 5065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15716:18:18",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 5066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15737:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "15716:22:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15711:27:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15686:52:18"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5072,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5070,
                              "name": "end",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5009,
                              "src": "15803:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 5071,
                              "name": "begin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5007,
                              "src": "15809:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15803:11:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 5073,
                            "name": "expectedLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5061,
                            "src": "15818:14:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15803:29:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5103,
                          "nodeType": "Block",
                          "src": "16083:51:18",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 5096,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16105:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5099,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "16120: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"
                                        }
                                      ],
                                      "id": 5098,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16112:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5097,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16112:7:18",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5100,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16112:10:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 5101,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "16104:19:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                                  "typeString": "tuple(bool,address)"
                                }
                              },
                              "functionReturnParameters": 5015,
                              "id": 5102,
                              "nodeType": "Return",
                              "src": "16097:26:18"
                            }
                          ]
                        },
                        "id": 5104,
                        "nodeType": "IfStatement",
                        "src": "15799:335:18",
                        "trueBody": {
                          "id": 5095,
                          "nodeType": "Block",
                          "src": "15834:243:18",
                          "statements": [
                            {
                              "assignments": [
                                5076,
                                5078
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5076,
                                  "mutability": "mutable",
                                  "name": "s",
                                  "nameLocation": "15955:1:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5095,
                                  "src": "15950:6:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 5075,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15950:4:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 5078,
                                  "mutability": "mutable",
                                  "name": "v",
                                  "nameLocation": "15966:1:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5095,
                                  "src": "15958:9:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5077,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15958:7:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5084,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 5080,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5005,
                                    "src": "16003:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "id": 5081,
                                    "name": "begin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5007,
                                    "src": "16010:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5082,
                                    "name": "end",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5009,
                                    "src": "16017:3:18",
                                    "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"
                                    }
                                  ],
                                  "id": 5079,
                                  "name": "_tryParseHexUintUncheckedBounds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4931,
                                  "src": "15971:31:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                                    "typeString": "function (string memory,uint256,uint256) pure returns (bool,uint256)"
                                  }
                                },
                                "id": 5083,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15971:50:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                  "typeString": "tuple(bool,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15949:72:18"
                            },
                            {
                              "expression": {
                                "components": [
                                  {
                                    "id": 5085,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5076,
                                    "src": "16043:1:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 5090,
                                            "name": "v",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5078,
                                            "src": "16062:1:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 5089,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16054:7:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint160_$",
                                            "typeString": "type(uint160)"
                                          },
                                          "typeName": {
                                            "id": 5088,
                                            "name": "uint160",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "16054:7:18",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 5091,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16054:10:18",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 5087,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "16046:7:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5086,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16046:7:18",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5092,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16046:19:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 5093,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "16042:24:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_address_$",
                                  "typeString": "tuple(bool,address)"
                                }
                              },
                              "functionReturnParameters": 5015,
                              "id": 5094,
                              "nodeType": "Return",
                              "src": "16035:31:18"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5003,
                    "nodeType": "StructuredDocumentation",
                    "src": "15020:226:18",
                    "text": " @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n formatted address. See {parseAddress-string-uint256-uint256} requirements."
                  },
                  "id": 5106,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryParseAddress",
                  "nameLocation": "15260:15:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5010,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5005,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "15299:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "15285:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5004,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15285:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5007,
                        "mutability": "mutable",
                        "name": "begin",
                        "nameLocation": "15322:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "15314:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5006,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15314:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5009,
                        "mutability": "mutable",
                        "name": "end",
                        "nameLocation": "15345:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "15337:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5008,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15337:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15275:79:18"
                  },
                  "returnParameters": {
                    "id": 5015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5012,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "15383:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "15378:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5011,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15378:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5014,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "15400:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5106,
                        "src": "15392:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5013,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15392:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15377:29:18"
                  },
                  "scope": 5345,
                  "src": "15251:889:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5165,
                    "nodeType": "Block",
                    "src": "16209:461:18",
                    "statements": [
                      {
                        "assignments": [
                          5114
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5114,
                            "mutability": "mutable",
                            "name": "value",
                            "nameLocation": "16225:5:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 5165,
                            "src": "16219:11:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 5113,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "16219:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5119,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5117,
                              "name": "chr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5108,
                              "src": "16239:3:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            ],
                            "id": 5116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16233:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 5115,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "16233:5:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16233:10:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16219:24:18"
                      },
                      {
                        "id": 5162,
                        "nodeType": "UncheckedBlock",
                        "src": "16403:238:18",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 5122,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5120,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5114,
                                  "src": "16431:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "3437",
                                  "id": 5121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16439:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_47_by_1",
                                    "typeString": "int_const 47"
                                  },
                                  "value": "47"
                                },
                                "src": "16431:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 5125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5123,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5114,
                                  "src": "16445:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "hexValue": "3538",
                                  "id": 5124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16453:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_58_by_1",
                                    "typeString": "int_const 58"
                                  },
                                  "value": "58"
                                },
                                "src": "16445:10:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "16431:24:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 5137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 5133,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 5131,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5114,
                                    "src": "16491:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "3936",
                                    "id": 5132,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16499:2:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    "value": "96"
                                  },
                                  "src": "16491:10:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 5136,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 5134,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5114,
                                    "src": "16505:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "hexValue": "313033",
                                    "id": 5135,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16513:3:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_103_by_1",
                                      "typeString": "int_const 103"
                                    },
                                    "value": "103"
                                  },
                                  "src": "16505:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "16491:25:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 5148,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 5144,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5142,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5114,
                                      "src": "16552:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "3634",
                                      "id": 5143,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16560:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "16552:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 5147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5145,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5114,
                                      "src": "16566:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "hexValue": "3731",
                                      "id": 5146,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16574:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_71_by_1",
                                        "typeString": "int_const 71"
                                      },
                                      "value": "71"
                                    },
                                    "src": "16566:10:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "16552:24:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "expression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 5155,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16620:5:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint8_$",
                                            "typeString": "type(uint8)"
                                          },
                                          "typeName": {
                                            "id": 5154,
                                            "name": "uint8",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "16620:5:18",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_uint8_$",
                                            "typeString": "type(uint8)"
                                          }
                                        ],
                                        "id": 5153,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "16615:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 5156,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16615:11:18",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_uint8",
                                        "typeString": "type(uint8)"
                                      }
                                    },
                                    "id": 5157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "16627:3:18",
                                    "memberName": "max",
                                    "nodeType": "MemberAccess",
                                    "src": "16615:15:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "functionReturnParameters": 5112,
                                  "id": 5158,
                                  "nodeType": "Return",
                                  "src": "16608:22:18"
                                },
                                "id": 5159,
                                "nodeType": "IfStatement",
                                "src": "16548:82:18",
                                "trueBody": {
                                  "expression": {
                                    "id": 5151,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 5149,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5114,
                                      "src": "16578:5:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "hexValue": "3535",
                                      "id": 5150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16587:2:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_55_by_1",
                                        "typeString": "int_const 55"
                                      },
                                      "value": "55"
                                    },
                                    "src": "16578:11:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "id": 5152,
                                  "nodeType": "ExpressionStatement",
                                  "src": "16578:11:18"
                                }
                              },
                              "id": 5160,
                              "nodeType": "IfStatement",
                              "src": "16487:143:18",
                              "trueBody": {
                                "expression": {
                                  "id": 5140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 5138,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5114,
                                    "src": "16518:5:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "-=",
                                  "rightHandSide": {
                                    "hexValue": "3837",
                                    "id": 5139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16527:2:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_87_by_1",
                                      "typeString": "int_const 87"
                                    },
                                    "value": "87"
                                  },
                                  "src": "16518:11:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 5141,
                                "nodeType": "ExpressionStatement",
                                "src": "16518:11:18"
                              }
                            },
                            "id": 5161,
                            "nodeType": "IfStatement",
                            "src": "16427:203:18",
                            "trueBody": {
                              "expression": {
                                "id": 5129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5127,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5114,
                                  "src": "16457:5:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "hexValue": "3438",
                                  "id": 5128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16466:2:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_48_by_1",
                                    "typeString": "int_const 48"
                                  },
                                  "value": "48"
                                },
                                "src": "16457:11:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "id": 5130,
                              "nodeType": "ExpressionStatement",
                              "src": "16457:11:18"
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 5163,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5114,
                          "src": "16658:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 5112,
                        "id": 5164,
                        "nodeType": "Return",
                        "src": "16651:12:18"
                      }
                    ]
                  },
                  "id": 5166,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_tryParseChr",
                  "nameLocation": "16155:12:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5108,
                        "mutability": "mutable",
                        "name": "chr",
                        "nameLocation": "16175:3:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5166,
                        "src": "16168:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 5107,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "16168:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16167:12:18"
                  },
                  "returnParameters": {
                    "id": 5112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5111,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5166,
                        "src": "16202:5:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5110,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "16202:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16201:7:18"
                  },
                  "scope": 5345,
                  "src": "16146:524:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 5331,
                    "nodeType": "Block",
                    "src": "17336:1331:18",
                    "statements": [
                      {
                        "assignments": [
                          5175
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5175,
                            "mutability": "mutable",
                            "name": "buffer",
                            "nameLocation": "17359:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 5331,
                            "src": "17346:19:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5174,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "17346:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5180,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5178,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5169,
                              "src": "17374:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 5177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17368:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 5176,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "17368:5:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17368:12:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17346:34:18"
                      },
                      {
                        "assignments": [
                          5182
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5182,
                            "mutability": "mutable",
                            "name": "output",
                            "nameLocation": "17403:6:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 5331,
                            "src": "17390:19:18",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5181,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "17390:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5190,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "32",
                                "id": 5185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17422:1:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "expression": {
                                  "id": 5186,
                                  "name": "buffer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5175,
                                  "src": "17426:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 5187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "17433:6:18",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "17426:13:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17422:17:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "17412:9:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 5183,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "17416:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 5189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17412:28:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17390:50:18"
                      },
                      {
                        "assignments": [
                          5192
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5192,
                            "mutability": "mutable",
                            "name": "outputLength",
                            "nameLocation": "17481:12:18",
                            "nodeType": "VariableDeclaration",
                            "scope": 5331,
                            "src": "17473:20:18",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5191,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17473:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5194,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 5193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17496:1:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17473:24:18"
                      },
                      {
                        "body": {
                          "id": 5323,
                          "nodeType": "Block",
                          "src": "17548:854:18",
                          "statements": [
                            {
                              "assignments": [
                                5206
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5206,
                                  "mutability": "mutable",
                                  "name": "char",
                                  "nameLocation": "17569:4:18",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5323,
                                  "src": "17562:11:18",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "typeName": {
                                    "id": 5205,
                                    "name": "bytes1",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17562:6:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5214,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 5210,
                                        "name": "buffer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5175,
                                        "src": "17606:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "id": 5211,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5196,
                                        "src": "17614:1:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5209,
                                      "name": "_unsafeReadBytesOffset",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5344,
                                      "src": "17583:22:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 5212,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17583:33:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 5208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17576:6:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                    "typeString": "type(bytes1)"
                                  },
                                  "typeName": {
                                    "id": 5207,
                                    "name": "bytes1",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17576:6:18",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17576:41:18",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17562:55:18"
                            },
                            {
                              "condition": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5226,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 5223,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 5215,
                                            "name": "SPECIAL_CHARS_LOOKUP",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3996,
                                            "src": "17637:20:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&",
                                          "rightExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 5221,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "hexValue": "31",
                                                  "id": 5216,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "17661:1:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<<",
                                                "rightExpression": {
                                                  "arguments": [
                                                    {
                                                      "id": 5219,
                                                      "name": "char",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5206,
                                                      "src": "17672:4:18",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                      }
                                                    ],
                                                    "id": 5218,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "17666:5:18",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_uint8_$",
                                                      "typeString": "type(uint8)"
                                                    },
                                                    "typeName": {
                                                      "id": 5217,
                                                      "name": "uint8",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "17666:5:18",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 5220,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "17666:11:18",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "17661:16:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 5222,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "17660:18:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "17637:41:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 5224,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "17636:43:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 5225,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17683:1:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "17636:48:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 5227,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "17635:50:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 5321,
                                "nodeType": "Block",
                                "src": "18330:62:18",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 5319,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 5314,
                                          "name": "output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5182,
                                          "src": "18348:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 5317,
                                        "indexExpression": {
                                          "id": 5316,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": false,
                                          "src": "18355:14:18",
                                          "subExpression": {
                                            "id": 5315,
                                            "name": "outputLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5192,
                                            "src": "18355:12:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "18348:22:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 5318,
                                        "name": "char",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5206,
                                        "src": "18373:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "src": "18348:29:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "id": 5320,
                                    "nodeType": "ExpressionStatement",
                                    "src": "18348:29:18"
                                  }
                                ]
                              },
                              "id": 5322,
                              "nodeType": "IfStatement",
                              "src": "17631:761:18",
                              "trueBody": {
                                "id": 5313,
                                "nodeType": "Block",
                                "src": "17687:637:18",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 5233,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 5228,
                                          "name": "output",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5182,
                                          "src": "17705:6:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 5231,
                                        "indexExpression": {
                                          "id": 5230,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": false,
                                          "src": "17712:14:18",
                                          "subExpression": {
                                            "id": 5229,
                                            "name": "outputLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5192,
                                            "src": "17712:12:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "17705:22:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "5c",
                                        "id": 5232,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17730:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                          "typeString": "literal_string \"\\\""
                                        },
                                        "value": "\\"
                                      },
                                      "src": "17705:29:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "id": 5234,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17705:29:18"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      },
                                      "id": 5237,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 5235,
                                        "name": "char",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5206,
                                        "src": "17756:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "30783038",
                                        "id": 5236,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17764:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        "value": "0x08"
                                      },
                                      "src": "17756:12:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        },
                                        "id": 5247,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 5245,
                                          "name": "char",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5206,
                                          "src": "17825:4:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "30783039",
                                          "id": 5246,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17833:4:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_9_by_1",
                                            "typeString": "int_const 9"
                                          },
                                          "value": "0x09"
                                        },
                                        "src": "17825:12:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          },
                                          "id": 5257,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 5255,
                                            "name": "char",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5206,
                                            "src": "17894:4:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "30783061",
                                            "id": 5256,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "17902:4:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "0x0a"
                                          },
                                          "src": "17894:12:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            },
                                            "id": 5267,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 5265,
                                              "name": "char",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5206,
                                              "src": "17963:4:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30783063",
                                              "id": 5266,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17971:4:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_12_by_1",
                                                "typeString": "int_const 12"
                                              },
                                              "value": "0x0c"
                                            },
                                            "src": "17963:12:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              },
                                              "id": 5277,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 5275,
                                                "name": "char",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5206,
                                                "src": "18032:4:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "hexValue": "30783064",
                                                "id": 5276,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18040:4:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_13_by_1",
                                                  "typeString": "int_const 13"
                                                },
                                                "value": "0x0d"
                                              },
                                              "src": "18032:12:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "condition": {
                                                "commonType": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                },
                                                "id": 5287,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 5285,
                                                  "name": "char",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5206,
                                                  "src": "18101:4:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                  "hexValue": "30783563",
                                                  "id": 5286,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "18109:4:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_92_by_1",
                                                    "typeString": "int_const 92"
                                                  },
                                                  "value": "0x5c"
                                                },
                                                "src": "18101:12:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseBody": {
                                                "condition": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  },
                                                  "id": 5297,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 5295,
                                                    "name": "char",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5206,
                                                    "src": "18171:4:18",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes1",
                                                      "typeString": "bytes1"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "==",
                                                  "rightExpression": {
                                                    "hexValue": "30783232",
                                                    "id": 5296,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "18179:4:18",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_34_by_1",
                                                      "typeString": "int_const 34"
                                                    },
                                                    "value": "0x22"
                                                  },
                                                  "src": "18171:12:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "id": 5306,
                                                "nodeType": "IfStatement",
                                                "src": "18167:143:18",
                                                "trueBody": {
                                                  "id": 5305,
                                                  "nodeType": "Block",
                                                  "src": "18185:125:18",
                                                  "statements": [
                                                    {
                                                      "expression": {
                                                        "id": 5303,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                          "baseExpression": {
                                                            "id": 5298,
                                                            "name": "output",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5182,
                                                            "src": "18263:6:18",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_bytes_memory_ptr",
                                                              "typeString": "bytes memory"
                                                            }
                                                          },
                                                          "id": 5301,
                                                          "indexExpression": {
                                                            "id": 5300,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "src": "18270:14:18",
                                                            "subExpression": {
                                                              "id": 5299,
                                                              "name": "outputLength",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 5192,
                                                              "src": "18270:12:18",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          "isConstant": false,
                                                          "isLValue": true,
                                                          "isPure": false,
                                                          "lValueRequested": true,
                                                          "nodeType": "IndexAccess",
                                                          "src": "18263:22:18",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes1",
                                                            "typeString": "bytes1"
                                                          }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                          "hexValue": "22",
                                                          "id": 5302,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "string",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "18288:3:18",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0",
                                                            "typeString": "literal_string \"\"\""
                                                          },
                                                          "value": "\""
                                                        },
                                                        "src": "18263:28:18",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes1",
                                                          "typeString": "bytes1"
                                                        }
                                                      },
                                                      "id": 5304,
                                                      "nodeType": "ExpressionStatement",
                                                      "src": "18263:28:18"
                                                    }
                                                  ]
                                                }
                                              },
                                              "id": 5307,
                                              "nodeType": "IfStatement",
                                              "src": "18097:213:18",
                                              "trueBody": {
                                                "expression": {
                                                  "id": 5293,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "baseExpression": {
                                                      "id": 5288,
                                                      "name": "output",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5182,
                                                      "src": "18115:6:18",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                      }
                                                    },
                                                    "id": 5291,
                                                    "indexExpression": {
                                                      "id": 5290,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "UnaryOperation",
                                                      "operator": "++",
                                                      "prefix": false,
                                                      "src": "18122:14:18",
                                                      "subExpression": {
                                                        "id": 5289,
                                                        "name": "outputLength",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5192,
                                                        "src": "18122:12:18",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "18115:22:18",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes1",
                                                      "typeString": "bytes1"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "hexValue": "5c",
                                                    "id": 5292,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "18140:4:18",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                                      "typeString": "literal_string \"\\\""
                                                    },
                                                    "value": "\\"
                                                  },
                                                  "src": "18115:29:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  }
                                                },
                                                "id": 5294,
                                                "nodeType": "ExpressionStatement",
                                                "src": "18115:29:18"
                                              }
                                            },
                                            "id": 5308,
                                            "nodeType": "IfStatement",
                                            "src": "18028:282:18",
                                            "trueBody": {
                                              "expression": {
                                                "id": 5283,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "baseExpression": {
                                                    "id": 5278,
                                                    "name": "output",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5182,
                                                    "src": "18046:6:18",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  },
                                                  "id": 5281,
                                                  "indexExpression": {
                                                    "id": 5280,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": false,
                                                    "src": "18053:14:18",
                                                    "subExpression": {
                                                      "id": 5279,
                                                      "name": "outputLength",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5192,
                                                      "src": "18053:12:18",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "nodeType": "IndexAccess",
                                                  "src": "18046:22:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes1",
                                                    "typeString": "bytes1"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "hexValue": "72",
                                                  "id": 5282,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "string",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "18071:3:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010",
                                                    "typeString": "literal_string \"r\""
                                                  },
                                                  "value": "r"
                                                },
                                                "src": "18046:28:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              "id": 5284,
                                              "nodeType": "ExpressionStatement",
                                              "src": "18046:28:18"
                                            }
                                          },
                                          "id": 5309,
                                          "nodeType": "IfStatement",
                                          "src": "17959:351:18",
                                          "trueBody": {
                                            "expression": {
                                              "id": 5273,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "baseExpression": {
                                                  "id": 5268,
                                                  "name": "output",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5182,
                                                  "src": "17977:6:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                },
                                                "id": 5271,
                                                "indexExpression": {
                                                  "id": 5270,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "UnaryOperation",
                                                  "operator": "++",
                                                  "prefix": false,
                                                  "src": "17984:14:18",
                                                  "subExpression": {
                                                    "id": 5269,
                                                    "name": "outputLength",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5192,
                                                    "src": "17984:12:18",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "17977:22:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "=",
                                              "rightHandSide": {
                                                "hexValue": "66",
                                                "id": 5272,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "18002:3:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483",
                                                  "typeString": "literal_string \"f\""
                                                },
                                                "value": "f"
                                              },
                                              "src": "17977:28:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            },
                                            "id": 5274,
                                            "nodeType": "ExpressionStatement",
                                            "src": "17977:28:18"
                                          }
                                        },
                                        "id": 5310,
                                        "nodeType": "IfStatement",
                                        "src": "17890:420:18",
                                        "trueBody": {
                                          "expression": {
                                            "id": 5263,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "id": 5258,
                                                "name": "output",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5182,
                                                "src": "17908:6:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 5261,
                                              "indexExpression": {
                                                "id": 5260,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "UnaryOperation",
                                                "operator": "++",
                                                "prefix": false,
                                                "src": "17915:14:18",
                                                "subExpression": {
                                                  "id": 5259,
                                                  "name": "outputLength",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5192,
                                                  "src": "17915:12:18",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "17908:22:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "6e",
                                              "id": 5262,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17933:3:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3",
                                                "typeString": "literal_string \"n\""
                                              },
                                              "value": "n"
                                            },
                                            "src": "17908:28:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "id": 5264,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17908:28:18"
                                        }
                                      },
                                      "id": 5311,
                                      "nodeType": "IfStatement",
                                      "src": "17821:489:18",
                                      "trueBody": {
                                        "expression": {
                                          "id": 5253,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 5248,
                                              "name": "output",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5182,
                                              "src": "17839:6:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 5251,
                                            "indexExpression": {
                                              "id": 5250,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "++",
                                              "prefix": false,
                                              "src": "17846:14:18",
                                              "subExpression": {
                                                "id": 5249,
                                                "name": "outputLength",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5192,
                                                "src": "17846:12:18",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "17839:22:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes1",
                                              "typeString": "bytes1"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "hexValue": "74",
                                            "id": 5252,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "17864:3:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089",
                                              "typeString": "literal_string \"t\""
                                            },
                                            "value": "t"
                                          },
                                          "src": "17839:28:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "id": 5254,
                                        "nodeType": "ExpressionStatement",
                                        "src": "17839:28:18"
                                      }
                                    },
                                    "id": 5312,
                                    "nodeType": "IfStatement",
                                    "src": "17752:558:18",
                                    "trueBody": {
                                      "expression": {
                                        "id": 5243,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "baseExpression": {
                                            "id": 5238,
                                            "name": "output",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5182,
                                            "src": "17770:6:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 5241,
                                          "indexExpression": {
                                            "id": 5240,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "17777:14:18",
                                            "subExpression": {
                                              "id": 5239,
                                              "name": "outputLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5192,
                                              "src": "17777:12:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "17770:22:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "hexValue": "62",
                                          "id": 5242,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17795:3:18",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510",
                                            "typeString": "literal_string \"b\""
                                          },
                                          "value": "b"
                                        },
                                        "src": "17770:28:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      "id": 5244,
                                      "nodeType": "ExpressionStatement",
                                      "src": "17770:28:18"
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5198,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5196,
                            "src": "17524:1:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 5199,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5175,
                              "src": "17528:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 5200,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "17535:6:18",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "17528:13:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17524:17:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5324,
                        "initializationExpression": {
                          "assignments": [
                            5196
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5196,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "17521:1:18",
                              "nodeType": "VariableDeclaration",
                              "scope": 5324,
                              "src": "17513:9:18",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5195,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17513:7:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5197,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "17513:9:18"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 5203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "17543:3:18",
                            "subExpression": {
                              "id": 5202,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5196,
                              "src": "17545:1:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5204,
                          "nodeType": "ExpressionStatement",
                          "src": "17543:3:18"
                        },
                        "nodeType": "ForStatement",
                        "src": "17508:894:18"
                      },
                      {
                        "AST": {
                          "nativeSrc": "18500:129:18",
                          "nodeType": "YulBlock",
                          "src": "18500:129:18",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nativeSrc": "18521:6:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "18521:6:18"
                                  },
                                  {
                                    "name": "outputLength",
                                    "nativeSrc": "18529:12:18",
                                    "nodeType": "YulIdentifier",
                                    "src": "18529:12:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18514:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18514:6:18"
                                },
                                "nativeSrc": "18514:28:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18514:28:18"
                              },
                              "nativeSrc": "18514:28:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "18514:28:18"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18562:4:18",
                                    "nodeType": "YulLiteral",
                                    "src": "18562:4:18",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "output",
                                        "nativeSrc": "18572:6:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "18572:6:18"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "18584:1:18",
                                            "nodeType": "YulLiteral",
                                            "src": "18584:1:18",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nativeSrc": "18591:1:18",
                                                "nodeType": "YulLiteral",
                                                "src": "18591:1:18",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "outputLength",
                                                    "nativeSrc": "18598:12:18",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18598:12:18"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nativeSrc": "18612:2:18",
                                                    "nodeType": "YulLiteral",
                                                    "src": "18612:2:18",
                                                    "type": "",
                                                    "value": "63"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nativeSrc": "18594:3:18",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18594:3:18"
                                                },
                                                "nativeSrc": "18594:21:18",
                                                "nodeType": "YulFunctionCall",
                                                "src": "18594:21:18"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shr",
                                              "nativeSrc": "18587:3:18",
                                              "nodeType": "YulIdentifier",
                                              "src": "18587:3:18"
                                            },
                                            "nativeSrc": "18587:29:18",
                                            "nodeType": "YulFunctionCall",
                                            "src": "18587:29:18"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nativeSrc": "18580:3:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "18580:3:18"
                                        },
                                        "nativeSrc": "18580:37:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "18580:37:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18568:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "18568:3:18"
                                    },
                                    "nativeSrc": "18568:50:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18568:50:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18555:6:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "18555:6:18"
                                },
                                "nativeSrc": "18555:64:18",
                                "nodeType": "YulFunctionCall",
                                "src": "18555:64:18"
                              },
                              "nativeSrc": "18555:64:18",
                              "nodeType": "YulExpressionStatement",
                              "src": "18555:64:18"
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 5182,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18521:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5182,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18572:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5192,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18529:12:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5192,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18598:12:18",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 5325,
                        "nodeType": "InlineAssembly",
                        "src": "18475:154:18"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5328,
                              "name": "output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5182,
                              "src": "18653:6:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18646:6:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 5326,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "18646:6:18",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18646:14:18",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5173,
                        "id": 5330,
                        "nodeType": "Return",
                        "src": "18639:21:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5167,
                    "nodeType": "StructuredDocumentation",
                    "src": "16676:576:18",
                    "text": " @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\n RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\n characters that are not in this range, but other tooling may provide different results."
                  },
                  "id": 5332,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "escapeJSON",
                  "nameLocation": "17266:10:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5169,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "17291:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5332,
                        "src": "17277:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5168,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17277:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17276:21:18"
                  },
                  "returnParameters": {
                    "id": 5173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5172,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5332,
                        "src": "17321:13:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5171,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17321:6:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17320:15:18"
                  },
                  "scope": 5345,
                  "src": "17257:1410:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5343,
                    "nodeType": "Block",
                    "src": "19052:225:18",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "19201:70:18",
                          "nodeType": "YulBlock",
                          "src": "19201:70:18",
                          "statements": [
                            {
                              "nativeSrc": "19215:46:18",
                              "nodeType": "YulAssignment",
                              "src": "19215:46:18",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "buffer",
                                            "nativeSrc": "19238:6:18",
                                            "nodeType": "YulIdentifier",
                                            "src": "19238:6:18"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "19246:4:18",
                                            "nodeType": "YulLiteral",
                                            "src": "19246:4:18",
                                            "type": "",
                                            "value": "0x20"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "19234:3:18",
                                          "nodeType": "YulIdentifier",
                                          "src": "19234:3:18"
                                        },
                                        "nativeSrc": "19234:17:18",
                                        "nodeType": "YulFunctionCall",
                                        "src": "19234:17:18"
                                      },
                                      {
                                        "name": "offset",
                                        "nativeSrc": "19253:6:18",
                                        "nodeType": "YulIdentifier",
                                        "src": "19253:6:18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "19230:3:18",
                                      "nodeType": "YulIdentifier",
                                      "src": "19230:3:18"
                                    },
                                    "nativeSrc": "19230:30:18",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19230:30:18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "19224:5:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "19224:5:18"
                                },
                                "nativeSrc": "19224:37:18",
                                "nodeType": "YulFunctionCall",
                                "src": "19224:37:18"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nativeSrc": "19215:5:18",
                                  "nodeType": "YulIdentifier",
                                  "src": "19215:5:18"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 5335,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19238:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5337,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19253:6:18",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5340,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19215:5:18",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 5342,
                        "nodeType": "InlineAssembly",
                        "src": "19176:95:18"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5333,
                    "nodeType": "StructuredDocumentation",
                    "src": "18673:268:18",
                    "text": " @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."
                  },
                  "id": 5344,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_unsafeReadBytesOffset",
                  "nameLocation": "18955:22:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5335,
                        "mutability": "mutable",
                        "name": "buffer",
                        "nameLocation": "18991:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5344,
                        "src": "18978:19:18",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5334,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18978:5:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5337,
                        "mutability": "mutable",
                        "name": "offset",
                        "nameLocation": "19007:6:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5344,
                        "src": "18999:14:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18999:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18977:37:18"
                  },
                  "returnParameters": {
                    "id": 5341,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5340,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "19045:5:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 5344,
                        "src": "19037:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5339,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19037:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19036:15:18"
                  },
                  "scope": 5345,
                  "src": "18946:331:18",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 5346,
              "src": "297:18982:18",
              "usedErrors": [
                4003,
                4006,
                4009
              ],
              "usedEvents": []
            }
          ],
          "src": "101:19179:18"
        },
        "id": 18
      },
      "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
          "exportedSymbols": {
            "ECDSA": [
              5693
            ]
          },
          "id": 5694,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5347,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "112:24:19"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ECDSA",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 5348,
                "nodeType": "StructuredDocumentation",
                "src": "138:205:19",
                "text": " @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."
              },
              "fullyImplemented": true,
              "id": 5693,
              "linearizedBaseContracts": [
                5693
              ],
              "name": "ECDSA",
              "nameLocation": "352:5:19",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ECDSA.RecoverError",
                  "id": 5353,
                  "members": [
                    {
                      "id": 5349,
                      "name": "NoError",
                      "nameLocation": "392:7:19",
                      "nodeType": "EnumValue",
                      "src": "392:7:19"
                    },
                    {
                      "id": 5350,
                      "name": "InvalidSignature",
                      "nameLocation": "409:16:19",
                      "nodeType": "EnumValue",
                      "src": "409:16:19"
                    },
                    {
                      "id": 5351,
                      "name": "InvalidSignatureLength",
                      "nameLocation": "435:22:19",
                      "nodeType": "EnumValue",
                      "src": "435:22:19"
                    },
                    {
                      "id": 5352,
                      "name": "InvalidSignatureS",
                      "nameLocation": "467:17:19",
                      "nodeType": "EnumValue",
                      "src": "467:17:19"
                    }
                  ],
                  "name": "RecoverError",
                  "nameLocation": "369:12:19",
                  "nodeType": "EnumDefinition",
                  "src": "364:126:19"
                },
                {
                  "documentation": {
                    "id": 5354,
                    "nodeType": "StructuredDocumentation",
                    "src": "496:63:19",
                    "text": " @dev The signature derives the `address(0)`."
                  },
                  "errorSelector": "f645eedf",
                  "id": 5356,
                  "name": "ECDSAInvalidSignature",
                  "nameLocation": "570:21:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5355,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "591:2:19"
                  },
                  "src": "564:30:19"
                },
                {
                  "documentation": {
                    "id": 5357,
                    "nodeType": "StructuredDocumentation",
                    "src": "600:60:19",
                    "text": " @dev The signature has an invalid length."
                  },
                  "errorSelector": "fce698f7",
                  "id": 5361,
                  "name": "ECDSAInvalidSignatureLength",
                  "nameLocation": "671:27:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5360,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5359,
                        "mutability": "mutable",
                        "name": "length",
                        "nameLocation": "707:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5361,
                        "src": "699:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5358,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "699:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "698:16:19"
                  },
                  "src": "665:50:19"
                },
                {
                  "documentation": {
                    "id": 5362,
                    "nodeType": "StructuredDocumentation",
                    "src": "721:85:19",
                    "text": " @dev The signature has an S value that is in the upper half order."
                  },
                  "errorSelector": "d78bce0c",
                  "id": 5366,
                  "name": "ECDSAInvalidSignatureS",
                  "nameLocation": "817:22:19",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5365,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5364,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "848:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5366,
                        "src": "840:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5363,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "840:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "839:11:19"
                  },
                  "src": "811:40:19"
                },
                {
                  "body": {
                    "id": 5418,
                    "nodeType": "Block",
                    "src": "2285:622:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5381,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5371,
                              "src": "2299:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 5382,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2309:6:19",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2299:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "3635",
                            "id": 5383,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2319:2:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_65_by_1",
                              "typeString": "int_const 65"
                            },
                            "value": "65"
                          },
                          "src": "2299:22:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5416,
                          "nodeType": "Block",
                          "src": "2793:108:19",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5405,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2823: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": 5404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2815:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5403,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2815:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5406,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2815:10:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5407,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5353,
                                      "src": "2827:12:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 5408,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2840:22:19",
                                    "memberName": "InvalidSignatureLength",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5351,
                                    "src": "2827:35:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$5353",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 5411,
                                          "name": "signature",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5371,
                                          "src": "2872:9:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 5412,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2882:6:19",
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "src": "2872:16:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5410,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2864:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 5409,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2864:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2864:25:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "id": 5414,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2814:76:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                                }
                              },
                              "functionReturnParameters": 5380,
                              "id": 5415,
                              "nodeType": "Return",
                              "src": "2807:83:19"
                            }
                          ]
                        },
                        "id": 5417,
                        "nodeType": "IfStatement",
                        "src": "2295:606:19",
                        "trueBody": {
                          "id": 5402,
                          "nodeType": "Block",
                          "src": "2323:464:19",
                          "statements": [
                            {
                              "assignments": [
                                5386
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5386,
                                  "mutability": "mutable",
                                  "name": "r",
                                  "nameLocation": "2345:1:19",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5402,
                                  "src": "2337:9:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 5385,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2337:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5387,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2337:9:19"
                            },
                            {
                              "assignments": [
                                5389
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5389,
                                  "mutability": "mutable",
                                  "name": "s",
                                  "nameLocation": "2368:1:19",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5402,
                                  "src": "2360:9:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 5388,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2360:7:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5390,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2360:9:19"
                            },
                            {
                              "assignments": [
                                5392
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5392,
                                  "mutability": "mutable",
                                  "name": "v",
                                  "nameLocation": "2389:1:19",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5402,
                                  "src": "2383:7:19",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "typeName": {
                                    "id": 5391,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2383:5:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5393,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2383:7:19"
                            },
                            {
                              "AST": {
                                "nativeSrc": "2560:171:19",
                                "nodeType": "YulBlock",
                                "src": "2560:171:19",
                                "statements": [
                                  {
                                    "nativeSrc": "2578:32:19",
                                    "nodeType": "YulAssignment",
                                    "src": "2578:32:19",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nativeSrc": "2593:9:19",
                                              "nodeType": "YulIdentifier",
                                              "src": "2593:9:19"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "2604:4:19",
                                              "nodeType": "YulLiteral",
                                              "src": "2604:4:19",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "2589:3:19",
                                            "nodeType": "YulIdentifier",
                                            "src": "2589:3:19"
                                          },
                                          "nativeSrc": "2589:20:19",
                                          "nodeType": "YulFunctionCall",
                                          "src": "2589:20:19"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nativeSrc": "2583:5:19",
                                        "nodeType": "YulIdentifier",
                                        "src": "2583:5:19"
                                      },
                                      "nativeSrc": "2583:27:19",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2583:27:19"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "r",
                                        "nativeSrc": "2578:1:19",
                                        "nodeType": "YulIdentifier",
                                        "src": "2578:1:19"
                                      }
                                    ]
                                  },
                                  {
                                    "nativeSrc": "2627:32:19",
                                    "nodeType": "YulAssignment",
                                    "src": "2627:32:19",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nativeSrc": "2642:9:19",
                                              "nodeType": "YulIdentifier",
                                              "src": "2642:9:19"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "2653:4:19",
                                              "nodeType": "YulLiteral",
                                              "src": "2653:4:19",
                                              "type": "",
                                              "value": "0x40"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "2638:3:19",
                                            "nodeType": "YulIdentifier",
                                            "src": "2638:3:19"
                                          },
                                          "nativeSrc": "2638:20:19",
                                          "nodeType": "YulFunctionCall",
                                          "src": "2638:20:19"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nativeSrc": "2632:5:19",
                                        "nodeType": "YulIdentifier",
                                        "src": "2632:5:19"
                                      },
                                      "nativeSrc": "2632:27:19",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2632:27:19"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "s",
                                        "nativeSrc": "2627:1:19",
                                        "nodeType": "YulIdentifier",
                                        "src": "2627:1:19"
                                      }
                                    ]
                                  },
                                  {
                                    "nativeSrc": "2676:41:19",
                                    "nodeType": "YulAssignment",
                                    "src": "2676:41:19",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2686:1:19",
                                          "nodeType": "YulLiteral",
                                          "src": "2686:1:19",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "signature",
                                                  "nativeSrc": "2699:9:19",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2699:9:19"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nativeSrc": "2710:4:19",
                                                  "nodeType": "YulLiteral",
                                                  "src": "2710:4:19",
                                                  "type": "",
                                                  "value": "0x60"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nativeSrc": "2695:3:19",
                                                "nodeType": "YulIdentifier",
                                                "src": "2695:3:19"
                                              },
                                              "nativeSrc": "2695:20:19",
                                              "nodeType": "YulFunctionCall",
                                              "src": "2695:20:19"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "2689:5:19",
                                            "nodeType": "YulIdentifier",
                                            "src": "2689:5:19"
                                          },
                                          "nativeSrc": "2689:27:19",
                                          "nodeType": "YulFunctionCall",
                                          "src": "2689:27:19"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "byte",
                                        "nativeSrc": "2681:4:19",
                                        "nodeType": "YulIdentifier",
                                        "src": "2681:4:19"
                                      },
                                      "nativeSrc": "2681:36:19",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2681:36:19"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "v",
                                        "nativeSrc": "2676:1:19",
                                        "nodeType": "YulIdentifier",
                                        "src": "2676:1:19"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "cancun",
                              "externalReferences": [
                                {
                                  "declaration": 5386,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2578:1:19",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 5389,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2627:1:19",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 5371,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2593:9:19",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 5371,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2642:9:19",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 5371,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2699:9:19",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 5392,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2676:1:19",
                                  "valueSize": 1
                                }
                              ],
                              "flags": [
                                "memory-safe"
                              ],
                              "id": 5394,
                              "nodeType": "InlineAssembly",
                              "src": "2535:196:19"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5396,
                                    "name": "hash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5369,
                                    "src": "2762:4:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 5397,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5392,
                                    "src": "2768:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "id": 5398,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5386,
                                    "src": "2771:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 5399,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5389,
                                    "src": "2774:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 5395,
                                  "name": "tryRecover",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    5419,
                                    5499,
                                    5607
                                  ],
                                  "referencedDeclaration": 5607,
                                  "src": "2751:10:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                    "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"
                                  }
                                },
                                "id": 5400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2751:25:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                                }
                              },
                              "functionReturnParameters": 5380,
                              "id": 5401,
                              "nodeType": "Return",
                              "src": "2744:32:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5367,
                    "nodeType": "StructuredDocumentation",
                    "src": "857:1267:19",
                    "text": " @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]"
                  },
                  "id": 5419,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "2138:10:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5372,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5369,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "2166:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2158:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5368,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2158:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5371,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2193:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2180:22:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5370,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2180:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2148:60:19"
                  },
                  "returnParameters": {
                    "id": 5380,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5374,
                        "mutability": "mutable",
                        "name": "recovered",
                        "nameLocation": "2240:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2232:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5373,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2232:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5377,
                        "mutability": "mutable",
                        "name": "err",
                        "nameLocation": "2264:3:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2251:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$5353",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 5376,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5375,
                            "name": "RecoverError",
                            "nameLocations": [
                              "2251:12:19"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5353,
                            "src": "2251:12:19"
                          },
                          "referencedDeclaration": 5353,
                          "src": "2251:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$5353",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5379,
                        "mutability": "mutable",
                        "name": "errArg",
                        "nameLocation": "2277:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5419,
                        "src": "2269:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5378,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2269:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2231:53:19"
                  },
                  "scope": 5693,
                  "src": "2129:778:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5448,
                    "nodeType": "Block",
                    "src": "3801:168:19",
                    "statements": [
                      {
                        "assignments": [
                          5430,
                          5433,
                          5435
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5430,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "3820:9:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5448,
                            "src": "3812:17:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5429,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3812:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5433,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "3844:5:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5448,
                            "src": "3831:18:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$5353",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 5432,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5431,
                                "name": "RecoverError",
                                "nameLocations": [
                                  "3831:12:19"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 5353,
                                "src": "3831:12:19"
                              },
                              "referencedDeclaration": 5353,
                              "src": "3831:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5435,
                            "mutability": "mutable",
                            "name": "errorArg",
                            "nameLocation": "3859:8:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5448,
                            "src": "3851:16:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5434,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3851:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5440,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5437,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5422,
                              "src": "3882:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 5438,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5424,
                              "src": "3888:9:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5436,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5419,
                              5499,
                              5607
                            ],
                            "referencedDeclaration": 5419,
                            "src": "3871:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"
                            }
                          },
                          "id": 5439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3871:27:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3811:87:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5442,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5433,
                              "src": "3920:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            {
                              "id": 5443,
                              "name": "errorArg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5435,
                              "src": "3927:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5441,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5692,
                            "src": "3908:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$5353_$_t_bytes32_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError,bytes32) pure"
                            }
                          },
                          "id": 5444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3908:28:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5445,
                        "nodeType": "ExpressionStatement",
                        "src": "3908:28:19"
                      },
                      {
                        "expression": {
                          "id": 5446,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5430,
                          "src": "3953:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5428,
                        "id": 5447,
                        "nodeType": "Return",
                        "src": "3946:16:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5420,
                    "nodeType": "StructuredDocumentation",
                    "src": "2913:796:19",
                    "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it."
                  },
                  "id": 5449,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "3723:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5422,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "3739:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5449,
                        "src": "3731:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5421,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3731:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5424,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "3758:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5449,
                        "src": "3745:22:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5423,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3745:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3730:38:19"
                  },
                  "returnParameters": {
                    "id": 5428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5427,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5449,
                        "src": "3792:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5426,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3792:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3791:9:19"
                  },
                  "scope": 5693,
                  "src": "3714:255:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5498,
                    "nodeType": "Block",
                    "src": "4348:342:19",
                    "statements": [
                      {
                        "id": 5497,
                        "nodeType": "UncheckedBlock",
                        "src": "4358:326:19",
                        "statements": [
                          {
                            "assignments": [
                              5467
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5467,
                                "mutability": "mutable",
                                "name": "s",
                                "nameLocation": "4390:1:19",
                                "nodeType": "VariableDeclaration",
                                "scope": 5497,
                                "src": "4382:9:19",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 5466,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4382:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 5474,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              "id": 5473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5468,
                                "name": "vs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5456,
                                "src": "4394:2:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
                                    "id": 5471,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4407:66:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                                      "typeString": "int_const 5789...(69 digits omitted)...9967"
                                    },
                                    "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                                      "typeString": "int_const 5789...(69 digits omitted)...9967"
                                    }
                                  ],
                                  "id": 5470,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4399:7:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 5469,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4399:7:19",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4399:75:19",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "src": "4394:80:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4382:92:19"
                          },
                          {
                            "assignments": [
                              5476
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5476,
                                "mutability": "mutable",
                                "name": "v",
                                "nameLocation": "4591:1:19",
                                "nodeType": "VariableDeclaration",
                                "scope": 5497,
                                "src": "4585:7:19",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 5475,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4585:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 5489,
                            "initialValue": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5487,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 5484,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 5481,
                                              "name": "vs",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5456,
                                              "src": "4610:2:19",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            ],
                                            "id": 5480,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "4602:7:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 5479,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "4602:7:19",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 5482,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4602:11:19",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "hexValue": "323535",
                                          "id": 5483,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4617:3:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_255_by_1",
                                            "typeString": "int_const 255"
                                          },
                                          "value": "255"
                                        },
                                        "src": "4602:18:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 5485,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4601:20:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "3237",
                                    "id": 5486,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4624:2:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_27_by_1",
                                      "typeString": "int_const 27"
                                    },
                                    "value": "27"
                                  },
                                  "src": "4601:25:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4595:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 5477,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4595:5:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4595:32:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4585:42:19"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5491,
                                  "name": "hash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5452,
                                  "src": "4659:4:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 5492,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5476,
                                  "src": "4665:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "id": 5493,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5454,
                                  "src": "4668:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 5494,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5467,
                                  "src": "4671:1:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 5490,
                                "name": "tryRecover",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  5419,
                                  5499,
                                  5607
                                ],
                                "referencedDeclaration": 5607,
                                "src": "4648:10:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                  "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"
                                }
                              },
                              "id": 5495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4648:25:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                              }
                            },
                            "functionReturnParameters": 5465,
                            "id": 5496,
                            "nodeType": "Return",
                            "src": "4641:32:19"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5450,
                    "nodeType": "StructuredDocumentation",
                    "src": "3975:205:19",
                    "text": " @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]"
                  },
                  "id": 5499,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "4194:10:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5457,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5452,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4222:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5499,
                        "src": "4214:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5451,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4214:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5454,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "4244:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5499,
                        "src": "4236:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5453,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4236:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5456,
                        "mutability": "mutable",
                        "name": "vs",
                        "nameLocation": "4263:2:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5499,
                        "src": "4255:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5455,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4255:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4204:67:19"
                  },
                  "returnParameters": {
                    "id": 5465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5459,
                        "mutability": "mutable",
                        "name": "recovered",
                        "nameLocation": "4303:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5499,
                        "src": "4295:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5458,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4295:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5462,
                        "mutability": "mutable",
                        "name": "err",
                        "nameLocation": "4327:3:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5499,
                        "src": "4314:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$5353",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 5461,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5460,
                            "name": "RecoverError",
                            "nameLocations": [
                              "4314:12:19"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5353,
                            "src": "4314:12:19"
                          },
                          "referencedDeclaration": 5353,
                          "src": "4314:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$5353",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5464,
                        "mutability": "mutable",
                        "name": "errArg",
                        "nameLocation": "4340:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5499,
                        "src": "4332:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5463,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4332:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4294:53:19"
                  },
                  "scope": 5693,
                  "src": "4185:505:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5531,
                    "nodeType": "Block",
                    "src": "4903:164:19",
                    "statements": [
                      {
                        "assignments": [
                          5512,
                          5515,
                          5517
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5512,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "4922:9:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5531,
                            "src": "4914:17:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5511,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4914:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5515,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "4946:5:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5531,
                            "src": "4933:18:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$5353",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 5514,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5513,
                                "name": "RecoverError",
                                "nameLocations": [
                                  "4933:12:19"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 5353,
                                "src": "4933:12:19"
                              },
                              "referencedDeclaration": 5353,
                              "src": "4933:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5517,
                            "mutability": "mutable",
                            "name": "errorArg",
                            "nameLocation": "4961:8:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5531,
                            "src": "4953:16:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5516,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4953:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5523,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5519,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5502,
                              "src": "4984:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 5520,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5504,
                              "src": "4990:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 5521,
                              "name": "vs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5506,
                              "src": "4993:2:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5518,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5419,
                              5499,
                              5607
                            ],
                            "referencedDeclaration": 5499,
                            "src": "4973:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"
                            }
                          },
                          "id": 5522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4973:23:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4913:83:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5525,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5515,
                              "src": "5018:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            {
                              "id": 5526,
                              "name": "errorArg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5517,
                              "src": "5025:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5524,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5692,
                            "src": "5006:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$5353_$_t_bytes32_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError,bytes32) pure"
                            }
                          },
                          "id": 5527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5006:28:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5528,
                        "nodeType": "ExpressionStatement",
                        "src": "5006:28:19"
                      },
                      {
                        "expression": {
                          "id": 5529,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5512,
                          "src": "5051:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5510,
                        "id": 5530,
                        "nodeType": "Return",
                        "src": "5044:16:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5500,
                    "nodeType": "StructuredDocumentation",
                    "src": "4696:116:19",
                    "text": " @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately."
                  },
                  "id": 5532,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "4826:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5507,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5502,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4842:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5532,
                        "src": "4834:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5501,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4834:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5504,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "4856:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5532,
                        "src": "4848:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5503,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4848:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5506,
                        "mutability": "mutable",
                        "name": "vs",
                        "nameLocation": "4867:2:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5532,
                        "src": "4859:10:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5505,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4859:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4833:37:19"
                  },
                  "returnParameters": {
                    "id": 5510,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5509,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5532,
                        "src": "4894:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5508,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4894:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4893:9:19"
                  },
                  "scope": 5693,
                  "src": "4817:250:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5606,
                    "nodeType": "Block",
                    "src": "5382:1372:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 5553,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5541,
                                "src": "6278:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 5552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6270:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5551,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6270:7:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6270:10:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130",
                            "id": 5555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6283:66:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1",
                              "typeString": "int_const 5789...(69 digits omitted)...7168"
                            },
                            "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"
                          },
                          "src": "6270:79:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5567,
                        "nodeType": "IfStatement",
                        "src": "6266:164:19",
                        "trueBody": {
                          "id": 5566,
                          "nodeType": "Block",
                          "src": "6351:79:19",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5559,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6381: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": 5558,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6373:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5557,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6373:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5560,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6373:10:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5561,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5353,
                                      "src": "6385:12:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 5562,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "6398:17:19",
                                    "memberName": "InvalidSignatureS",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5352,
                                    "src": "6385:30:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$5353",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  {
                                    "id": 5563,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5541,
                                    "src": "6417:1:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "id": 5564,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6372:47:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                                }
                              },
                              "functionReturnParameters": 5550,
                              "id": 5565,
                              "nodeType": "Return",
                              "src": "6365:54:19"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5569
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5569,
                            "mutability": "mutable",
                            "name": "signer",
                            "nameLocation": "6532:6:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5606,
                            "src": "6524:14:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5568,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6524:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5576,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5571,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5535,
                              "src": "6551:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 5572,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5537,
                              "src": "6557:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 5573,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5539,
                              "src": "6560:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 5574,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5541,
                              "src": "6563:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5570,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "6541:9:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 5575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6541:24:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6524:41:19"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5577,
                            "name": "signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5569,
                            "src": "6579:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 5580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6597: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": 5579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6589:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5578,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6589:7:19",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6589:10:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6579:20:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5596,
                        "nodeType": "IfStatement",
                        "src": "6575:113:19",
                        "trueBody": {
                          "id": 5595,
                          "nodeType": "Block",
                          "src": "6601:87:19",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5585,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6631: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": 5584,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6623:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 5583,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6623:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6623:10:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5587,
                                      "name": "RecoverError",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5353,
                                      "src": "6635:12:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 5588,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "6648:16:19",
                                    "memberName": "InvalidSignature",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5350,
                                    "src": "6635:29:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$5353",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5591,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6674: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": 5590,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6666:7:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 5589,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6666:7:19",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5592,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6666:10:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "id": 5593,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6622:55:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                                }
                              },
                              "functionReturnParameters": 5550,
                              "id": 5594,
                              "nodeType": "Return",
                              "src": "6615:62:19"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 5597,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5569,
                              "src": "6706:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 5598,
                                "name": "RecoverError",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5353,
                                "src": "6714:12:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                  "typeString": "type(enum ECDSA.RecoverError)"
                                }
                              },
                              "id": 5599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "6727:7:19",
                              "memberName": "NoError",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5349,
                              "src": "6714:20:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 5602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6744: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": 5601,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6736:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 5600,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6736:7:19",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6736:10:19",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "id": 5604,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6705:42:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                          }
                        },
                        "functionReturnParameters": 5550,
                        "id": 5605,
                        "nodeType": "Return",
                        "src": "6698:49:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5533,
                    "nodeType": "StructuredDocumentation",
                    "src": "5073:125:19",
                    "text": " @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately."
                  },
                  "id": 5607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryRecover",
                  "nameLocation": "5212:10:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5535,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "5240:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5607,
                        "src": "5232:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5534,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5232:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5537,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "5260:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5607,
                        "src": "5254:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5536,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "5254:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5539,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "5279:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5607,
                        "src": "5271:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5538,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5271:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5541,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "5298:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5607,
                        "src": "5290:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5540,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5290:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5222:83:19"
                  },
                  "returnParameters": {
                    "id": 5550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5544,
                        "mutability": "mutable",
                        "name": "recovered",
                        "nameLocation": "5337:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5607,
                        "src": "5329:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5329:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5547,
                        "mutability": "mutable",
                        "name": "err",
                        "nameLocation": "5361:3:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5607,
                        "src": "5348:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$5353",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 5546,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5545,
                            "name": "RecoverError",
                            "nameLocations": [
                              "5348:12:19"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5353,
                            "src": "5348:12:19"
                          },
                          "referencedDeclaration": 5353,
                          "src": "5348:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$5353",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5549,
                        "mutability": "mutable",
                        "name": "errArg",
                        "nameLocation": "5374:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5607,
                        "src": "5366:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5548,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5366:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5328:53:19"
                  },
                  "scope": 5693,
                  "src": "5203:1551:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5642,
                    "nodeType": "Block",
                    "src": "6981:166:19",
                    "statements": [
                      {
                        "assignments": [
                          5622,
                          5625,
                          5627
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5622,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nameLocation": "7000:9:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5642,
                            "src": "6992:17:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5621,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6992:7:19",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5625,
                            "mutability": "mutable",
                            "name": "error",
                            "nameLocation": "7024:5:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5642,
                            "src": "7011:18:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$5353",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "typeName": {
                              "id": 5624,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5623,
                                "name": "RecoverError",
                                "nameLocations": [
                                  "7011:12:19"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 5353,
                                "src": "7011:12:19"
                              },
                              "referencedDeclaration": 5353,
                              "src": "7011:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5627,
                            "mutability": "mutable",
                            "name": "errorArg",
                            "nameLocation": "7039:8:19",
                            "nodeType": "VariableDeclaration",
                            "scope": 5642,
                            "src": "7031:16:19",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5626,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7031:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5634,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5629,
                              "name": "hash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5610,
                              "src": "7062:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 5630,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5612,
                              "src": "7068:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 5631,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5614,
                              "src": "7071:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 5632,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5616,
                              "src": "7074:1:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5628,
                            "name": "tryRecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              5419,
                              5499,
                              5607
                            ],
                            "referencedDeclaration": 5607,
                            "src": "7051:10:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"
                            }
                          },
                          "id": 5633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7051:25:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                            "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6991:85:19"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5636,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5625,
                              "src": "7098:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            {
                              "id": 5637,
                              "name": "errorArg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5627,
                              "src": "7105:8:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5635,
                            "name": "_throwError",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5692,
                            "src": "7086:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$5353_$_t_bytes32_$returns$__$",
                              "typeString": "function (enum ECDSA.RecoverError,bytes32) pure"
                            }
                          },
                          "id": 5638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7086:28:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5639,
                        "nodeType": "ExpressionStatement",
                        "src": "7086:28:19"
                      },
                      {
                        "expression": {
                          "id": 5640,
                          "name": "recovered",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5622,
                          "src": "7131:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5620,
                        "id": 5641,
                        "nodeType": "Return",
                        "src": "7124:16:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5608,
                    "nodeType": "StructuredDocumentation",
                    "src": "6760:122:19",
                    "text": " @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."
                  },
                  "id": 5643,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "recover",
                  "nameLocation": "6896:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5610,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "6912:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5643,
                        "src": "6904:12:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5609,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6904:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5612,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "6924:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5643,
                        "src": "6918:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 5611,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "6918:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5614,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "6935:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5643,
                        "src": "6927:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5613,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6927:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5616,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "6946:1:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5643,
                        "src": "6938:9:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5615,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6938:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6903:45:19"
                  },
                  "returnParameters": {
                    "id": 5620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5619,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5643,
                        "src": "6972:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5618,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6972:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6971:9:19"
                  },
                  "scope": 5693,
                  "src": "6887:260:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5691,
                    "nodeType": "Block",
                    "src": "7352:460:19",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_RecoverError_$5353",
                            "typeString": "enum ECDSA.RecoverError"
                          },
                          "id": 5655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5652,
                            "name": "error",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5647,
                            "src": "7366:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$5353",
                              "typeString": "enum ECDSA.RecoverError"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 5653,
                              "name": "RecoverError",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5353,
                              "src": "7375:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                "typeString": "type(enum ECDSA.RecoverError)"
                              }
                            },
                            "id": 5654,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7388:7:19",
                            "memberName": "NoError",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5349,
                            "src": "7375:20:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_RecoverError_$5353",
                              "typeString": "enum ECDSA.RecoverError"
                            }
                          },
                          "src": "7366:29:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_RecoverError_$5353",
                              "typeString": "enum ECDSA.RecoverError"
                            },
                            "id": 5661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5658,
                              "name": "error",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5647,
                              "src": "7462:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 5659,
                                "name": "RecoverError",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5353,
                                "src": "7471:12:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                  "typeString": "type(enum ECDSA.RecoverError)"
                                }
                              },
                              "id": 5660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "7484:16:19",
                              "memberName": "InvalidSignature",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5350,
                              "src": "7471:29:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              }
                            },
                            "src": "7462:38:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_RecoverError_$5353",
                                "typeString": "enum ECDSA.RecoverError"
                              },
                              "id": 5669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5666,
                                "name": "error",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5647,
                                "src": "7567:5:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RecoverError_$5353",
                                  "typeString": "enum ECDSA.RecoverError"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 5667,
                                  "name": "RecoverError",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5353,
                                  "src": "7576:12:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                    "typeString": "type(enum ECDSA.RecoverError)"
                                  }
                                },
                                "id": 5668,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "7589:22:19",
                                "memberName": "InvalidSignatureLength",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5351,
                                "src": "7576:35:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RecoverError_$5353",
                                  "typeString": "enum ECDSA.RecoverError"
                                }
                              },
                              "src": "7567:44:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_RecoverError_$5353",
                                  "typeString": "enum ECDSA.RecoverError"
                                },
                                "id": 5681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5678,
                                  "name": "error",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5647,
                                  "src": "7701:5:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$5353",
                                    "typeString": "enum ECDSA.RecoverError"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 5679,
                                    "name": "RecoverError",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5353,
                                    "src": "7710:12:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                      "typeString": "type(enum ECDSA.RecoverError)"
                                    }
                                  },
                                  "id": 5680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "7723:17:19",
                                  "memberName": "InvalidSignatureS",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5352,
                                  "src": "7710:30:19",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$5353",
                                    "typeString": "enum ECDSA.RecoverError"
                                  }
                                },
                                "src": "7701:39:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 5687,
                              "nodeType": "IfStatement",
                              "src": "7697:109:19",
                              "trueBody": {
                                "id": 5686,
                                "nodeType": "Block",
                                "src": "7742:64:19",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 5683,
                                          "name": "errorArg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5649,
                                          "src": "7786:8:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 5682,
                                        "name": "ECDSAInvalidSignatureS",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5366,
                                        "src": "7763:22:19",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$_t_error_$",
                                          "typeString": "function (bytes32) pure returns (error)"
                                        }
                                      },
                                      "id": 5684,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7763:32:19",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_error",
                                        "typeString": "error"
                                      }
                                    },
                                    "id": 5685,
                                    "nodeType": "RevertStatement",
                                    "src": "7756:39:19"
                                  }
                                ]
                              }
                            },
                            "id": 5688,
                            "nodeType": "IfStatement",
                            "src": "7563:243:19",
                            "trueBody": {
                              "id": 5677,
                              "nodeType": "Block",
                              "src": "7613:78:19",
                              "statements": [
                                {
                                  "errorCall": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 5673,
                                            "name": "errorArg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5649,
                                            "src": "7670:8:19",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "id": 5672,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7662:7:19",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 5671,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "7662:7:19",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 5674,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7662:17:19",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 5670,
                                      "name": "ECDSAInvalidSignatureLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5361,
                                      "src": "7634:27:19",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$",
                                        "typeString": "function (uint256) pure returns (error)"
                                      }
                                    },
                                    "id": 5675,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7634:46:19",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_error",
                                      "typeString": "error"
                                    }
                                  },
                                  "id": 5676,
                                  "nodeType": "RevertStatement",
                                  "src": "7627:53:19"
                                }
                              ]
                            }
                          },
                          "id": 5689,
                          "nodeType": "IfStatement",
                          "src": "7458:348:19",
                          "trueBody": {
                            "id": 5665,
                            "nodeType": "Block",
                            "src": "7502:55:19",
                            "statements": [
                              {
                                "errorCall": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 5662,
                                    "name": "ECDSAInvalidSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5356,
                                    "src": "7523:21:19",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$__$returns$_t_error_$",
                                      "typeString": "function () pure returns (error)"
                                    }
                                  },
                                  "id": 5663,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7523:23:19",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_error",
                                    "typeString": "error"
                                  }
                                },
                                "id": 5664,
                                "nodeType": "RevertStatement",
                                "src": "7516:30:19"
                              }
                            ]
                          }
                        },
                        "id": 5690,
                        "nodeType": "IfStatement",
                        "src": "7362:444:19",
                        "trueBody": {
                          "id": 5657,
                          "nodeType": "Block",
                          "src": "7397:55:19",
                          "statements": [
                            {
                              "functionReturnParameters": 5651,
                              "id": 5656,
                              "nodeType": "Return",
                              "src": "7411:7:19"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5644,
                    "nodeType": "StructuredDocumentation",
                    "src": "7153:122:19",
                    "text": " @dev Optionally reverts with the corresponding custom error according to the `error` argument provided."
                  },
                  "id": 5692,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_throwError",
                  "nameLocation": "7289:11:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5650,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5647,
                        "mutability": "mutable",
                        "name": "error",
                        "nameLocation": "7314:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5692,
                        "src": "7301:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RecoverError_$5353",
                          "typeString": "enum ECDSA.RecoverError"
                        },
                        "typeName": {
                          "id": 5646,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5645,
                            "name": "RecoverError",
                            "nameLocations": [
                              "7301:12:19"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5353,
                            "src": "7301:12:19"
                          },
                          "referencedDeclaration": 5353,
                          "src": "7301:12:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_RecoverError_$5353",
                            "typeString": "enum ECDSA.RecoverError"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5649,
                        "mutability": "mutable",
                        "name": "errorArg",
                        "nameLocation": "7329:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 5692,
                        "src": "7321:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5648,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7321:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7300:38:19"
                  },
                  "returnParameters": {
                    "id": 5651,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7352:0:19"
                  },
                  "scope": 5693,
                  "src": "7280:532:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                }
              ],
              "scope": 5694,
              "src": "344:7470:19",
              "usedErrors": [
                5356,
                5361,
                5366
              ],
              "usedEvents": []
            }
          ],
          "src": "112:7703:19"
        },
        "id": 19
      },
      "@openzeppelin/contracts/utils/cryptography/EIP712.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/cryptography/EIP712.sol",
          "exportedSymbols": {
            "EIP712": [
              5920
            ],
            "IERC5267": [
              3021
            ],
            "MessageHashUtils": [
              6006
            ],
            "ShortString": [
              3608
            ],
            "ShortStrings": [
              3819
            ]
          },
          "id": 5921,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5695,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "113:24:20"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
              "file": "./MessageHashUtils.sol",
              "id": 5697,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5921,
              "sourceUnit": 6007,
              "src": "139:56:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5696,
                    "name": "MessageHashUtils",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6006,
                    "src": "147:16:20",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/ShortStrings.sol",
              "file": "../ShortStrings.sol",
              "id": 5700,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5921,
              "sourceUnit": 3820,
              "src": "196:62:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5698,
                    "name": "ShortStrings",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3819,
                    "src": "204:12:20",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5699,
                    "name": "ShortString",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3608,
                    "src": "218:11:20",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/IERC5267.sol",
              "file": "../../interfaces/IERC5267.sol",
              "id": 5702,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5921,
              "sourceUnit": 3022,
              "src": "259:55:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5701,
                    "name": "IERC5267",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3021,
                    "src": "267:8:20",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5704,
                    "name": "IERC5267",
                    "nameLocations": [
                      "1988:8:20"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3021,
                    "src": "1988:8:20"
                  },
                  "id": 5705,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1988:8:20"
                }
              ],
              "canonicalName": "EIP712",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5703,
                "nodeType": "StructuredDocumentation",
                "src": "316:1643:20",
                "text": " @dev https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data.\n The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"
              },
              "fullyImplemented": true,
              "id": 5920,
              "linearizedBaseContracts": [
                5920,
                3021
              ],
              "name": "EIP712",
              "nameLocation": "1978:6:20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 5707,
                  "libraryName": {
                    "id": 5706,
                    "name": "ShortStrings",
                    "nameLocations": [
                      "2009:12:20"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3819,
                    "src": "2009:12:20"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "2003:25:20"
                },
                {
                  "constant": true,
                  "id": 5712,
                  "mutability": "constant",
                  "name": "TYPE_HASH",
                  "nameLocation": "2059:9:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2034:140:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5708,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2034:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                        "id": 5710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2089:84:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                        },
                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                        }
                      ],
                      "id": 5709,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "2079:9:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 5711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2079:95:20",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5714,
                  "mutability": "immutable",
                  "name": "_cachedDomainSeparator",
                  "nameLocation": "2399:22:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2373:48:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5713,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2373:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5716,
                  "mutability": "immutable",
                  "name": "_cachedChainId",
                  "nameLocation": "2453:14:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2427:40:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5715,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2427:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5718,
                  "mutability": "immutable",
                  "name": "_cachedThis",
                  "nameLocation": "2499:11:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2473:37:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5717,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2473:7:20",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5720,
                  "mutability": "immutable",
                  "name": "_hashedName",
                  "nameLocation": "2543:11:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2517:37:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5719,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2517:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5722,
                  "mutability": "immutable",
                  "name": "_hashedVersion",
                  "nameLocation": "2586:14:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2560:40:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5721,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2560:7:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5725,
                  "mutability": "immutable",
                  "name": "_name",
                  "nameLocation": "2637:5:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2607:35:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                    "typeString": "ShortString"
                  },
                  "typeName": {
                    "id": 5724,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5723,
                      "name": "ShortString",
                      "nameLocations": [
                        "2607:11:20"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3608,
                      "src": "2607:11:20"
                    },
                    "referencedDeclaration": 3608,
                    "src": "2607:11:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                      "typeString": "ShortString"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5728,
                  "mutability": "immutable",
                  "name": "_version",
                  "nameLocation": "2678:8:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2648:38:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                    "typeString": "ShortString"
                  },
                  "typeName": {
                    "id": 5727,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5726,
                      "name": "ShortString",
                      "nameLocations": [
                        "2648:11:20"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3608,
                      "src": "2648:11:20"
                    },
                    "referencedDeclaration": 3608,
                    "src": "2648:11:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                      "typeString": "ShortString"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5730,
                  "mutability": "mutable",
                  "name": "_nameFallback",
                  "nameLocation": "2757:13:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2742:28:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5729,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2742:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 5732,
                  "mutability": "mutable",
                  "name": "_versionFallback",
                  "nameLocation": "2841:16:20",
                  "nodeType": "VariableDeclaration",
                  "scope": 5920,
                  "src": "2826:31:20",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5731,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2826:6:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 5789,
                    "nodeType": "Block",
                    "src": "3483:376:20",
                    "statements": [
                      {
                        "expression": {
                          "id": 5745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5740,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5725,
                            "src": "3493:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                              "typeString": "ShortString"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5743,
                                "name": "_nameFallback",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5730,
                                "src": "3532:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "expression": {
                                "id": 5741,
                                "name": "name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5735,
                                "src": "3501:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 5742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3506:25:20",
                              "memberName": "toShortStringWithFallback",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3760,
                              "src": "3501:30:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueType$_ShortString_$3608_$attached_to$_t_string_memory_ptr_$",
                                "typeString": "function (string memory,string storage pointer) returns (ShortString)"
                              }
                            },
                            "id": 5744,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3501:45:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                              "typeString": "ShortString"
                            }
                          },
                          "src": "3493:53:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "id": 5746,
                        "nodeType": "ExpressionStatement",
                        "src": "3493:53:20"
                      },
                      {
                        "expression": {
                          "id": 5752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5747,
                            "name": "_version",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5728,
                            "src": "3556:8:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                              "typeString": "ShortString"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5750,
                                "name": "_versionFallback",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5732,
                                "src": "3601:16:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_storage",
                                  "typeString": "string storage ref"
                                }
                              ],
                              "expression": {
                                "id": 5748,
                                "name": "version",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5737,
                                "src": "3567:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 5749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3575:25:20",
                              "memberName": "toShortStringWithFallback",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3760,
                              "src": "3567:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueType$_ShortString_$3608_$attached_to$_t_string_memory_ptr_$",
                                "typeString": "function (string memory,string storage pointer) returns (ShortString)"
                              }
                            },
                            "id": 5751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3567:51:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                              "typeString": "ShortString"
                            }
                          },
                          "src": "3556:62:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                            "typeString": "ShortString"
                          }
                        },
                        "id": 5753,
                        "nodeType": "ExpressionStatement",
                        "src": "3556:62:20"
                      },
                      {
                        "expression": {
                          "id": 5761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5754,
                            "name": "_hashedName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5720,
                            "src": "3628:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 5758,
                                    "name": "name",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5735,
                                    "src": "3658:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 5757,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3652:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 5756,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3652:5:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3652:11:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 5755,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "3642:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 5760,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3642:22:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3628:36:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5762,
                        "nodeType": "ExpressionStatement",
                        "src": "3628:36:20"
                      },
                      {
                        "expression": {
                          "id": 5770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5763,
                            "name": "_hashedVersion",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5722,
                            "src": "3674:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 5767,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5737,
                                    "src": "3707:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 5766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3701:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 5765,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3701:5:20",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3701:14:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 5764,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "3691:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 5769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3691:25:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3674:42:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5771,
                        "nodeType": "ExpressionStatement",
                        "src": "3674:42:20"
                      },
                      {
                        "expression": {
                          "id": 5775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5772,
                            "name": "_cachedChainId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5716,
                            "src": "3727:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 5773,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "3744:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 5774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3750:7:20",
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "3744:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3727:30:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5776,
                        "nodeType": "ExpressionStatement",
                        "src": "3727:30:20"
                      },
                      {
                        "expression": {
                          "id": 5780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5777,
                            "name": "_cachedDomainSeparator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5714,
                            "src": "3767:22:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5778,
                              "name": "_buildDomainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5837,
                              "src": "3792:21:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                "typeString": "function () view returns (bytes32)"
                              }
                            },
                            "id": 5779,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3792:23:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3767:48:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5781,
                        "nodeType": "ExpressionStatement",
                        "src": "3767:48:20"
                      },
                      {
                        "expression": {
                          "id": 5787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5782,
                            "name": "_cachedThis",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5718,
                            "src": "3825:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5785,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "3847:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_EIP712_$5920",
                                  "typeString": "contract EIP712"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_EIP712_$5920",
                                  "typeString": "contract EIP712"
                                }
                              ],
                              "id": 5784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3839:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5783,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3839:7:20",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3839:13:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3825:27:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5788,
                        "nodeType": "ExpressionStatement",
                        "src": "3825:27:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5733,
                    "nodeType": "StructuredDocumentation",
                    "src": "2864:559:20",
                    "text": " @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."
                  },
                  "id": 5790,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5735,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "3454:4:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5790,
                        "src": "3440:18:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5734,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3440:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5737,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "3474:7:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5790,
                        "src": "3460:21:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5736,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3460:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3439:43:20"
                  },
                  "returnParameters": {
                    "id": 5739,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3483:0:20"
                  },
                  "scope": 5920,
                  "src": "3428:431:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5815,
                    "nodeType": "Block",
                    "src": "4007:200:20",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 5801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 5798,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "4029:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EIP712_$5920",
                                    "typeString": "contract EIP712"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EIP712_$5920",
                                    "typeString": "contract EIP712"
                                  }
                                ],
                                "id": 5797,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4021:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5796,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4021:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4021:13:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5800,
                              "name": "_cachedThis",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5718,
                              "src": "4038:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4021:28:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5805,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 5802,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "4053:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4059:7:20",
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "4053:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5804,
                              "name": "_cachedChainId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5716,
                              "src": "4070:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "4053:31:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4021:63:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5813,
                          "nodeType": "Block",
                          "src": "4146:55:20",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5810,
                                  "name": "_buildDomainSeparator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5837,
                                  "src": "4167:21:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                    "typeString": "function () view returns (bytes32)"
                                  }
                                },
                                "id": 5811,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4167:23:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 5795,
                              "id": 5812,
                              "nodeType": "Return",
                              "src": "4160:30:20"
                            }
                          ]
                        },
                        "id": 5814,
                        "nodeType": "IfStatement",
                        "src": "4017:184:20",
                        "trueBody": {
                          "id": 5809,
                          "nodeType": "Block",
                          "src": "4086:54:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 5807,
                                "name": "_cachedDomainSeparator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5714,
                                "src": "4107:22:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 5795,
                              "id": 5808,
                              "nodeType": "Return",
                              "src": "4100:29:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5791,
                    "nodeType": "StructuredDocumentation",
                    "src": "3865:75:20",
                    "text": " @dev Returns the domain separator for the current chain."
                  },
                  "id": 5816,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_domainSeparatorV4",
                  "nameLocation": "3954:18:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5792,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3972:2:20"
                  },
                  "returnParameters": {
                    "id": 5795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5794,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5816,
                        "src": "3998:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5793,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3998:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3997:9:20"
                  },
                  "scope": 5920,
                  "src": "3945:262:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5836,
                    "nodeType": "Block",
                    "src": "4277:115:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5824,
                                  "name": "TYPE_HASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5712,
                                  "src": "4315:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 5825,
                                  "name": "_hashedName",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5720,
                                  "src": "4326:11:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 5826,
                                  "name": "_hashedVersion",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5722,
                                  "src": "4339:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 5827,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "4355:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 5828,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "4361:7:20",
                                  "memberName": "chainid",
                                  "nodeType": "MemberAccess",
                                  "src": "4355:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 5831,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "4378:4:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_EIP712_$5920",
                                        "typeString": "contract EIP712"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_EIP712_$5920",
                                        "typeString": "contract EIP712"
                                      }
                                    ],
                                    "id": 5830,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4370:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5829,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4370:7:20",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5832,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4370:13:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 5822,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4304:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "4308:6:20",
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "4304:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4304:80:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5821,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "4294:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 5834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4294:91:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5820,
                        "id": 5835,
                        "nodeType": "Return",
                        "src": "4287:98:20"
                      }
                    ]
                  },
                  "id": 5837,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_buildDomainSeparator",
                  "nameLocation": "4222:21:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5817,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4243:2:20"
                  },
                  "returnParameters": {
                    "id": 5820,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5819,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5837,
                        "src": "4268:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5818,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4268:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4267:9:20"
                  },
                  "scope": 5920,
                  "src": "4213:179:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 5852,
                    "nodeType": "Block",
                    "src": "5103:90:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5847,
                                "name": "_domainSeparatorV4",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5816,
                                "src": "5153:18:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                  "typeString": "function () view returns (bytes32)"
                                }
                              },
                              "id": 5848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5153:20:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 5849,
                              "name": "structHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5840,
                              "src": "5175:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 5845,
                              "name": "MessageHashUtils",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6006,
                              "src": "5120:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MessageHashUtils_$6006_$",
                                "typeString": "type(library MessageHashUtils)"
                              }
                            },
                            "id": 5846,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5137:15:20",
                            "memberName": "toTypedDataHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6005,
                            "src": "5120:32:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 5850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5120:66:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5844,
                        "id": 5851,
                        "nodeType": "Return",
                        "src": "5113:73:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5838,
                    "nodeType": "StructuredDocumentation",
                    "src": "4398:614:20",
                    "text": " @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     keccak256(\"Mail(address to,string contents)\"),\n     mailTo,\n     keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"
                  },
                  "id": 5853,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_hashTypedDataV4",
                  "nameLocation": "5026:16:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5841,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5840,
                        "mutability": "mutable",
                        "name": "structHash",
                        "nameLocation": "5051:10:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5853,
                        "src": "5043:18:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5839,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5043:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5042:20:20"
                  },
                  "returnParameters": {
                    "id": 5844,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5843,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5853,
                        "src": "5094:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5842,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5094:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5093:9:20"
                  },
                  "scope": 5920,
                  "src": "5017:176:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3020
                  ],
                  "body": {
                    "id": 5894,
                    "nodeType": "Block",
                    "src": "5556:229:20",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "hexValue": "0f",
                              "id": 5872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "hexString",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5587:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c",
                                "typeString": "literal_string hex\"0f\""
                              },
                              "value": "\u000f"
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5873,
                                "name": "_EIP712Name",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5907,
                                "src": "5617:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view returns (string memory)"
                                }
                              },
                              "id": 5874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5617:13:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5875,
                                "name": "_EIP712Version",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5919,
                                "src": "5644:14:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                                  "typeString": "function () view returns (string memory)"
                                }
                              },
                              "id": 5876,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5644:16:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 5877,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "5674:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "5680:7:20",
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "5674:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5881,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5709:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_EIP712_$5920",
                                    "typeString": "contract EIP712"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_EIP712_$5920",
                                    "typeString": "contract EIP712"
                                  }
                                ],
                                "id": 5880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5701:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5879,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5701:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5701:13:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 5885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5736:1:20",
                                  "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": 5884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5728:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 5883,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5728:7:20",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5886,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5728:10:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 5890,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5766:1:20",
                                  "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": 5889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "5752:13:20",
                                "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": 5887,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5756:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5888,
                                  "nodeType": "ArrayTypeName",
                                  "src": "5756:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                    "typeString": "uint256[]"
                                  }
                                }
                              },
                              "id": 5891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5752:16:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 5892,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5573:205:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(literal_string hex\"0f\",string memory,string memory,uint256,address,bytes32,uint256[] memory)"
                          }
                        },
                        "functionReturnParameters": 5871,
                        "id": 5893,
                        "nodeType": "Return",
                        "src": "5566:212:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5854,
                    "nodeType": "StructuredDocumentation",
                    "src": "5199:24:20",
                    "text": "@inheritdoc IERC5267"
                  },
                  "functionSelector": "84b0196e",
                  "id": 5895,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "eip712Domain",
                  "nameLocation": "5237:12:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5855,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5249:2:20"
                  },
                  "returnParameters": {
                    "id": 5871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5857,
                        "mutability": "mutable",
                        "name": "fields",
                        "nameLocation": "5333:6:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5895,
                        "src": "5326:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 5856,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "5326:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5859,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "5367:4:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5895,
                        "src": "5353:18:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5858,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5353:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5861,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "5399:7:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5895,
                        "src": "5385:21:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5860,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5385:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5863,
                        "mutability": "mutable",
                        "name": "chainId",
                        "nameLocation": "5428:7:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5895,
                        "src": "5420:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5862,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5420:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5865,
                        "mutability": "mutable",
                        "name": "verifyingContract",
                        "nameLocation": "5457:17:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5895,
                        "src": "5449:25:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5864,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5449:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5867,
                        "mutability": "mutable",
                        "name": "salt",
                        "nameLocation": "5496:4:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5895,
                        "src": "5488:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5866,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5488:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5870,
                        "mutability": "mutable",
                        "name": "extensions",
                        "nameLocation": "5531:10:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 5895,
                        "src": "5514:27:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5868,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5514:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5869,
                          "nodeType": "ArrayTypeName",
                          "src": "5514:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5312:239:20"
                  },
                  "scope": 5920,
                  "src": "5228:557:20",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5906,
                    "nodeType": "Block",
                    "src": "6166:65:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5903,
                              "name": "_nameFallback",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5730,
                              "src": "6210:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            ],
                            "expression": {
                              "id": 5901,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5725,
                              "src": "6183:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                "typeString": "ShortString"
                              }
                            },
                            "id": 5902,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6189:20:20",
                            "memberName": "toStringWithFallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3787,
                            "src": "6183:26:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ShortString_$3608_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$3608_$",
                              "typeString": "function (ShortString,string storage pointer) pure returns (string memory)"
                            }
                          },
                          "id": 5904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6183:41:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5900,
                        "id": 5905,
                        "nodeType": "Return",
                        "src": "6176:48:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5896,
                    "nodeType": "StructuredDocumentation",
                    "src": "5791:256:20",
                    "text": " @dev The name parameter for the EIP712 domain.\n NOTE: By default this function reads _name which is an immutable value.\n It only reads from storage if necessary (in case the value is too large to fit in a ShortString)."
                  },
                  "id": 5907,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_EIP712Name",
                  "nameLocation": "6114:11:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5897,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6125:2:20"
                  },
                  "returnParameters": {
                    "id": 5900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5899,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5907,
                        "src": "6151:13:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5898,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6151:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6150:15:20"
                  },
                  "scope": 5920,
                  "src": "6105:126:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5918,
                    "nodeType": "Block",
                    "src": "6621:71:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5915,
                              "name": "_versionFallback",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5732,
                              "src": "6668:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_storage",
                                "typeString": "string storage ref"
                              }
                            ],
                            "expression": {
                              "id": 5913,
                              "name": "_version",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5728,
                              "src": "6638:8:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_userDefinedValueType$_ShortString_$3608",
                                "typeString": "ShortString"
                              }
                            },
                            "id": 5914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "6647:20:20",
                            "memberName": "toStringWithFallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3787,
                            "src": "6638:29:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_ShortString_$3608_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$3608_$",
                              "typeString": "function (ShortString,string storage pointer) pure returns (string memory)"
                            }
                          },
                          "id": 5916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6638:47:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5912,
                        "id": 5917,
                        "nodeType": "Return",
                        "src": "6631:54:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5908,
                    "nodeType": "StructuredDocumentation",
                    "src": "6237:262:20",
                    "text": " @dev The version parameter for the EIP712 domain.\n NOTE: By default this function reads _version which is an immutable value.\n It only reads from storage if necessary (in case the value is too large to fit in a ShortString)."
                  },
                  "id": 5919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_EIP712Version",
                  "nameLocation": "6566:14:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5909,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6580:2:20"
                  },
                  "returnParameters": {
                    "id": 5912,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5911,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5919,
                        "src": "6606:13:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5910,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6606:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6605:15:20"
                  },
                  "scope": 5920,
                  "src": "6557:135:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5921,
              "src": "1960:4734:20",
              "usedErrors": [
                3616,
                3618
              ],
              "usedEvents": [
                3001
              ]
            }
          ],
          "src": "113:6582:20"
        },
        "id": 20
      },
      "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
          "exportedSymbols": {
            "MessageHashUtils": [
              6006
            ],
            "Strings": [
              5345
            ]
          },
          "id": 6007,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5922,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "123:24:21"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
              "file": "../Strings.sol",
              "id": 5924,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6007,
              "sourceUnit": 5346,
              "src": "149:39:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5923,
                    "name": "Strings",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5345,
                    "src": "157:7:21",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "MessageHashUtils",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 5925,
                "nodeType": "StructuredDocumentation",
                "src": "190:330:21",
                "text": " @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n The library provides methods for generating a hash of a message that conforms to the\n https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n specifications."
              },
              "fullyImplemented": true,
              "id": 6006,
              "linearizedBaseContracts": [
                6006
              ],
              "name": "MessageHashUtils",
              "nameLocation": "529:16:21",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5934,
                    "nodeType": "Block",
                    "src": "1339:341:21",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "1374:300:21",
                          "nodeType": "YulBlock",
                          "src": "1374:300:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1395:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "1395:4:21",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
                                    "kind": "string",
                                    "nativeSrc": "1401:34:21",
                                    "nodeType": "YulLiteral",
                                    "src": "1401:34:21",
                                    "type": "",
                                    "value": "\u0019Ethereum Signed Message:\n32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "1388:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "1388:6:21"
                                },
                                "nativeSrc": "1388:48:21",
                                "nodeType": "YulFunctionCall",
                                "src": "1388:48:21"
                              },
                              "nativeSrc": "1388:48:21",
                              "nodeType": "YulExpressionStatement",
                              "src": "1388:48:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1497:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "1497:4:21",
                                    "type": "",
                                    "value": "0x1c"
                                  },
                                  {
                                    "name": "messageHash",
                                    "nativeSrc": "1503:11:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "1503:11:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "1490:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "1490:6:21"
                                },
                                "nativeSrc": "1490:25:21",
                                "nodeType": "YulFunctionCall",
                                "src": "1490:25:21"
                              },
                              "nativeSrc": "1490:25:21",
                              "nodeType": "YulExpressionStatement",
                              "src": "1490:25:21"
                            },
                            {
                              "nativeSrc": "1569:31:21",
                              "nodeType": "YulAssignment",
                              "src": "1569:31:21",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1589:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:4:21",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1595:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "1595:4:21",
                                    "type": "",
                                    "value": "0x3c"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nativeSrc": "1579:9:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "1579:9:21"
                                },
                                "nativeSrc": "1579:21:21",
                                "nodeType": "YulFunctionCall",
                                "src": "1579:21:21"
                              },
                              "variableNames": [
                                {
                                  "name": "digest",
                                  "nativeSrc": "1569:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "1569:6:21"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 5931,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1569:6:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5928,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1503:11:21",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 5933,
                        "nodeType": "InlineAssembly",
                        "src": "1349:325:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5926,
                    "nodeType": "StructuredDocumentation",
                    "src": "552:690:21",
                    "text": " @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing a bytes32 `messageHash` with\n `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n keccak256, although any bytes32 value can be safely used because the final digest will\n be re-hashed.\n See {ECDSA-recover}."
                  },
                  "id": 5935,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toEthSignedMessageHash",
                  "nameLocation": "1256:22:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5928,
                        "mutability": "mutable",
                        "name": "messageHash",
                        "nameLocation": "1287:11:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 5935,
                        "src": "1279:19:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5927,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1279:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1278:21:21"
                  },
                  "returnParameters": {
                    "id": 5932,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5931,
                        "mutability": "mutable",
                        "name": "digest",
                        "nameLocation": "1331:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 5935,
                        "src": "1323:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5930,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1323:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1322:16:21"
                  },
                  "scope": 6006,
                  "src": "1247:433:21",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5960,
                    "nodeType": "Block",
                    "src": "2257:143:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a",
                                  "id": 5947,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2309:32:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""
                                  },
                                  "value": "\u0019Ethereum Signed Message:\n"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 5952,
                                            "name": "message",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5938,
                                            "src": "2366:7:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 5953,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberLocation": "2374:6:21",
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "src": "2366:14:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 5950,
                                          "name": "Strings",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5345,
                                          "src": "2349:7:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Strings_$5345_$",
                                            "typeString": "type(library Strings)"
                                          }
                                        },
                                        "id": 5951,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "2357:8:21",
                                        "memberName": "toString",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4057,
                                        "src": "2349:16:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                          "typeString": "function (uint256) pure returns (string memory)"
                                        }
                                      },
                                      "id": 5954,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2349:32:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 5949,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2343:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 5948,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2343:5:21",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2343:39:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "id": 5956,
                                  "name": "message",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5938,
                                  "src": "2384:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4",
                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 5945,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2296:5:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 5944,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2296:5:21",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5946,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "2302:6:21",
                                "memberName": "concat",
                                "nodeType": "MemberAccess",
                                "src": "2296:12:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2296:96:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5943,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2286:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 5958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2286:107:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5942,
                        "id": 5959,
                        "nodeType": "Return",
                        "src": "2267:126:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5936,
                    "nodeType": "StructuredDocumentation",
                    "src": "1686:480:21",
                    "text": " @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing an arbitrary `message` with\n `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n See {ECDSA-recover}."
                  },
                  "id": 5961,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toEthSignedMessageHash",
                  "nameLocation": "2180:22:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5938,
                        "mutability": "mutable",
                        "name": "message",
                        "nameLocation": "2216:7:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 5961,
                        "src": "2203:20:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5937,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2203:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2202:22:21"
                  },
                  "returnParameters": {
                    "id": 5942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5941,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5961,
                        "src": "2248:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5940,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2248:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2247:9:21"
                  },
                  "scope": 6006,
                  "src": "2171:229:21",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5980,
                    "nodeType": "Block",
                    "src": "2854:80:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1900",
                                  "id": 5974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "hexString",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2898:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a",
                                    "typeString": "literal_string hex\"1900\""
                                  },
                                  "value": "\u0019\u0000"
                                },
                                {
                                  "id": 5975,
                                  "name": "validator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5964,
                                  "src": "2910:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5976,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5966,
                                  "src": "2921:4:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a",
                                    "typeString": "literal_string hex\"1900\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 5972,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2881:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2885:12:21",
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "2881:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5977,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2881:45:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5971,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2871:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 5978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2871:56:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5970,
                        "id": 5979,
                        "nodeType": "Return",
                        "src": "2864:63:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5962,
                    "nodeType": "StructuredDocumentation",
                    "src": "2406:332:21",
                    "text": " @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x00` (data with intended validator).\n The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n `validator` address. Then hashing the result.\n See {ECDSA-recover}."
                  },
                  "id": 5981,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toDataWithIntendedValidatorHash",
                  "nameLocation": "2752:31:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5967,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5964,
                        "mutability": "mutable",
                        "name": "validator",
                        "nameLocation": "2792:9:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 5981,
                        "src": "2784:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2784:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5966,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2816:4:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 5981,
                        "src": "2803:17:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5965,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2803:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2783:38:21"
                  },
                  "returnParameters": {
                    "id": 5970,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5969,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5981,
                        "src": "2845:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5968,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2845:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2844:9:21"
                  },
                  "scope": 6006,
                  "src": "2743:191:21",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5992,
                    "nodeType": "Block",
                    "src": "3216:216:21",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "3251:175:21",
                          "nodeType": "YulBlock",
                          "src": "3251:175:21",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3272:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "3272:4:21",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "hexValue": "1900",
                                    "kind": "string",
                                    "nativeSrc": "3278:10:21",
                                    "nodeType": "YulLiteral",
                                    "src": "3278:10:21",
                                    "type": "",
                                    "value": "\u0019\u0000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "3265:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "3265:6:21"
                                },
                                "nativeSrc": "3265:24:21",
                                "nodeType": "YulFunctionCall",
                                "src": "3265:24:21"
                              },
                              "nativeSrc": "3265:24:21",
                              "nodeType": "YulExpressionStatement",
                              "src": "3265:24:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3309:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "3309:4:21",
                                    "type": "",
                                    "value": "0x02"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "3319:2:21",
                                        "nodeType": "YulLiteral",
                                        "src": "3319:2:21",
                                        "type": "",
                                        "value": "96"
                                      },
                                      {
                                        "name": "validator",
                                        "nativeSrc": "3323:9:21",
                                        "nodeType": "YulIdentifier",
                                        "src": "3323:9:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "3315:3:21",
                                      "nodeType": "YulIdentifier",
                                      "src": "3315:3:21"
                                    },
                                    "nativeSrc": "3315:18:21",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3315:18:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "3302:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "3302:6:21"
                                },
                                "nativeSrc": "3302:32:21",
                                "nodeType": "YulFunctionCall",
                                "src": "3302:32:21"
                              },
                              "nativeSrc": "3302:32:21",
                              "nodeType": "YulExpressionStatement",
                              "src": "3302:32:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3354:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "3354:4:21",
                                    "type": "",
                                    "value": "0x16"
                                  },
                                  {
                                    "name": "messageHash",
                                    "nativeSrc": "3360:11:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "3360:11:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "3347:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "3347:6:21"
                                },
                                "nativeSrc": "3347:25:21",
                                "nodeType": "YulFunctionCall",
                                "src": "3347:25:21"
                              },
                              "nativeSrc": "3347:25:21",
                              "nodeType": "YulExpressionStatement",
                              "src": "3347:25:21"
                            },
                            {
                              "nativeSrc": "3385:31:21",
                              "nodeType": "YulAssignment",
                              "src": "3385:31:21",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3405:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "3405:4:21",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3411:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "3411:4:21",
                                    "type": "",
                                    "value": "0x36"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nativeSrc": "3395:9:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "3395:9:21"
                                },
                                "nativeSrc": "3395:21:21",
                                "nodeType": "YulFunctionCall",
                                "src": "3395:21:21"
                              },
                              "variableNames": [
                                {
                                  "name": "digest",
                                  "nativeSrc": "3385:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "3385:6:21"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 5989,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3385:6:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3360:11:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5984,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3323:9:21",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 5991,
                        "nodeType": "InlineAssembly",
                        "src": "3226:200:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5982,
                    "nodeType": "StructuredDocumentation",
                    "src": "2940:129:21",
                    "text": " @dev Variant of {toDataWithIntendedValidatorHash-address-bytes} optimized for cases where `data` is a bytes32."
                  },
                  "id": 5993,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toDataWithIntendedValidatorHash",
                  "nameLocation": "3083:31:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5987,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5984,
                        "mutability": "mutable",
                        "name": "validator",
                        "nameLocation": "3132:9:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 5993,
                        "src": "3124:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5983,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3124:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5986,
                        "mutability": "mutable",
                        "name": "messageHash",
                        "nameLocation": "3159:11:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 5993,
                        "src": "3151:19:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5985,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3151:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3114:62:21"
                  },
                  "returnParameters": {
                    "id": 5990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5989,
                        "mutability": "mutable",
                        "name": "digest",
                        "nameLocation": "3208:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 5993,
                        "src": "3200:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5988,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3200:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3199:16:21"
                  },
                  "scope": 6006,
                  "src": "3074:358:21",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6004,
                    "nodeType": "Block",
                    "src": "3983:265:21",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "4018:224:21",
                          "nodeType": "YulBlock",
                          "src": "4018:224:21",
                          "statements": [
                            {
                              "nativeSrc": "4032:22:21",
                              "nodeType": "YulVariableDeclaration",
                              "src": "4032:22:21",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4049:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "4049:4:21",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "4043:5:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "4043:5:21"
                                },
                                "nativeSrc": "4043:11:21",
                                "nodeType": "YulFunctionCall",
                                "src": "4043:11:21"
                              },
                              "variables": [
                                {
                                  "name": "ptr",
                                  "nativeSrc": "4036:3:21",
                                  "nodeType": "YulTypedName",
                                  "src": "4036:3:21",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ptr",
                                    "nativeSrc": "4074:3:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "4074:3:21"
                                  },
                                  {
                                    "hexValue": "1901",
                                    "kind": "string",
                                    "nativeSrc": "4079:10:21",
                                    "nodeType": "YulLiteral",
                                    "src": "4079:10:21",
                                    "type": "",
                                    "value": "\u0019\u0001"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "4067:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "4067:6:21"
                                },
                                "nativeSrc": "4067:23:21",
                                "nodeType": "YulFunctionCall",
                                "src": "4067:23:21"
                              },
                              "nativeSrc": "4067:23:21",
                              "nodeType": "YulExpressionStatement",
                              "src": "4067:23:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "4114:3:21",
                                        "nodeType": "YulIdentifier",
                                        "src": "4114:3:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4119:4:21",
                                        "nodeType": "YulLiteral",
                                        "src": "4119:4:21",
                                        "type": "",
                                        "value": "0x02"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4110:3:21",
                                      "nodeType": "YulIdentifier",
                                      "src": "4110:3:21"
                                    },
                                    "nativeSrc": "4110:14:21",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4110:14:21"
                                  },
                                  {
                                    "name": "domainSeparator",
                                    "nativeSrc": "4126:15:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "4126:15:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "4103:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "4103:6:21"
                                },
                                "nativeSrc": "4103:39:21",
                                "nodeType": "YulFunctionCall",
                                "src": "4103:39:21"
                              },
                              "nativeSrc": "4103:39:21",
                              "nodeType": "YulExpressionStatement",
                              "src": "4103:39:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "4166:3:21",
                                        "nodeType": "YulIdentifier",
                                        "src": "4166:3:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "4171:4:21",
                                        "nodeType": "YulLiteral",
                                        "src": "4171:4:21",
                                        "type": "",
                                        "value": "0x22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "4162:3:21",
                                      "nodeType": "YulIdentifier",
                                      "src": "4162:3:21"
                                    },
                                    "nativeSrc": "4162:14:21",
                                    "nodeType": "YulFunctionCall",
                                    "src": "4162:14:21"
                                  },
                                  {
                                    "name": "structHash",
                                    "nativeSrc": "4178:10:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "4178:10:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "4155:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "4155:6:21"
                                },
                                "nativeSrc": "4155:34:21",
                                "nodeType": "YulFunctionCall",
                                "src": "4155:34:21"
                              },
                              "nativeSrc": "4155:34:21",
                              "nodeType": "YulExpressionStatement",
                              "src": "4155:34:21"
                            },
                            {
                              "nativeSrc": "4202:30:21",
                              "nodeType": "YulAssignment",
                              "src": "4202:30:21",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr",
                                    "nativeSrc": "4222:3:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "4222:3:21"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "4227:4:21",
                                    "nodeType": "YulLiteral",
                                    "src": "4227:4:21",
                                    "type": "",
                                    "value": "0x42"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nativeSrc": "4212:9:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "4212:9:21"
                                },
                                "nativeSrc": "4212:20:21",
                                "nodeType": "YulFunctionCall",
                                "src": "4212:20:21"
                              },
                              "variableNames": [
                                {
                                  "name": "digest",
                                  "nativeSrc": "4202:6:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "4202:6:21"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 6001,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4202:6:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5996,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4126:15:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5998,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4178:10:21",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 6003,
                        "nodeType": "InlineAssembly",
                        "src": "3993:249:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5994,
                    "nodeType": "StructuredDocumentation",
                    "src": "3438:431:21",
                    "text": " @dev Returns the keccak256 digest of an EIP-712 typed data (ERC-191 version `0x01`).\n The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n See {ECDSA-recover}."
                  },
                  "id": 6005,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toTypedDataHash",
                  "nameLocation": "3883:15:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5999,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5996,
                        "mutability": "mutable",
                        "name": "domainSeparator",
                        "nameLocation": "3907:15:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6005,
                        "src": "3899:23:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5995,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3899:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5998,
                        "mutability": "mutable",
                        "name": "structHash",
                        "nameLocation": "3932:10:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6005,
                        "src": "3924:18:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5997,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3924:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3898:45:21"
                  },
                  "returnParameters": {
                    "id": 6002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6001,
                        "mutability": "mutable",
                        "name": "digest",
                        "nameLocation": "3975:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6005,
                        "src": "3967:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6000,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3967:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3966:16:21"
                  },
                  "scope": 6006,
                  "src": "3874:374:21",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 6007,
              "src": "521:3729:21",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "123:4128:21"
        },
        "id": 21
      },
      "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol",
          "exportedSymbols": {
            "Bytes": [
              3528
            ],
            "ECDSA": [
              5693
            ],
            "IERC1271": [
              2996
            ],
            "IERC7913SignatureVerifier": [
              3037
            ],
            "SignatureChecker": [
              6310
            ]
          },
          "id": 6311,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6008,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".24"
              ],
              "nodeType": "PragmaDirective",
              "src": "123:24:22"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
              "file": "./ECDSA.sol",
              "id": 6010,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6311,
              "sourceUnit": 5694,
              "src": "149:34:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6009,
                    "name": "ECDSA",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5693,
                    "src": "157:5:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/IERC1271.sol",
              "file": "../../interfaces/IERC1271.sol",
              "id": 6012,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6311,
              "sourceUnit": 2997,
              "src": "184:55:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6011,
                    "name": "IERC1271",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2996,
                    "src": "192:8:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/interfaces/IERC7913.sol",
              "file": "../../interfaces/IERC7913.sol",
              "id": 6014,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6311,
              "sourceUnit": 3038,
              "src": "240:72:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6013,
                    "name": "IERC7913SignatureVerifier",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3037,
                    "src": "248:25:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Bytes.sol",
              "file": "../../utils/Bytes.sol",
              "id": 6016,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6311,
              "sourceUnit": 3529,
              "src": "313:44:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6015,
                    "name": "Bytes",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3528,
                    "src": "321:5:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SignatureChecker",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 6017,
                "nodeType": "StructuredDocumentation",
                "src": "359:481:22",
                "text": " @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support:\n * ECDSA signatures from externally owned accounts (EOAs)\n * ERC-1271 signatures from smart contract wallets like Argent and Safe Wallet (previously Gnosis Safe)\n * ERC-7913 signatures from keys that do not have an Ethereum address of their own\n See https://eips.ethereum.org/EIPS/eip-1271[ERC-1271] and https://eips.ethereum.org/EIPS/eip-7913[ERC-7913]."
              },
              "fullyImplemented": true,
              "id": 6310,
              "linearizedBaseContracts": [
                6310
              ],
              "name": "SignatureChecker",
              "nameLocation": "849:16:22",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "global": false,
                  "id": 6020,
                  "libraryName": {
                    "id": 6018,
                    "name": "Bytes",
                    "nameLocations": [
                      "878:5:22"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3528,
                    "src": "878:5:22"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "872:22:22",
                  "typeName": {
                    "id": 6019,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "888:5:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "body": {
                    "id": 6067,
                    "nodeType": "Block",
                    "src": "1606:317:22",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 6032,
                                "name": "signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6023,
                                "src": "1620:6:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 6033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1627:4:22",
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "1620:11:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6034,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "1632:6:22",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1620:18:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6035,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1642:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1620:23:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 6065,
                          "nodeType": "Block",
                          "src": "1834:83:22",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6060,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6023,
                                    "src": "1882:6:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6061,
                                    "name": "hash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6025,
                                    "src": "1890:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 6062,
                                    "name": "signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6027,
                                    "src": "1896:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 6059,
                                  "name": "isValidERC1271SignatureNow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6120,
                                  "src": "1855:26:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                    "typeString": "function (address,bytes32,bytes memory) view returns (bool)"
                                  }
                                },
                                "id": 6063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1855:51:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "functionReturnParameters": 6031,
                              "id": 6064,
                              "nodeType": "Return",
                              "src": "1848:58:22"
                            }
                          ]
                        },
                        "id": 6066,
                        "nodeType": "IfStatement",
                        "src": "1616:301:22",
                        "trueBody": {
                          "id": 6058,
                          "nodeType": "Block",
                          "src": "1645:183:22",
                          "statements": [
                            {
                              "assignments": [
                                6038,
                                6041,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6038,
                                  "mutability": "mutable",
                                  "name": "recovered",
                                  "nameLocation": "1668:9:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6058,
                                  "src": "1660:17:22",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 6037,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1660:7:22",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 6041,
                                  "mutability": "mutable",
                                  "name": "err",
                                  "nameLocation": "1698:3:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6058,
                                  "src": "1679:22:22",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_RecoverError_$5353",
                                    "typeString": "enum ECDSA.RecoverError"
                                  },
                                  "typeName": {
                                    "id": 6040,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 6039,
                                      "name": "ECDSA.RecoverError",
                                      "nameLocations": [
                                        "1679:5:22",
                                        "1685:12:22"
                                      ],
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 5353,
                                      "src": "1679:18:22"
                                    },
                                    "referencedDeclaration": 5353,
                                    "src": "1679:18:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$5353",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 6047,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 6044,
                                    "name": "hash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6025,
                                    "src": "1724:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 6045,
                                    "name": "signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6027,
                                    "src": "1730:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6042,
                                    "name": "ECDSA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5693,
                                    "src": "1707:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ECDSA_$5693_$",
                                      "typeString": "type(library ECDSA)"
                                    }
                                  },
                                  "id": 6043,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "1713:10:22",
                                  "memberName": "tryRecover",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5419,
                                  "src": "1707:16:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                    "typeString": "function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"
                                  }
                                },
                                "id": 6046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1707:33:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$5353_$_t_bytes32_$",
                                  "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1659:81:22"
                            },
                            {
                              "expression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 6056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_RecoverError_$5353",
                                    "typeString": "enum ECDSA.RecoverError"
                                  },
                                  "id": 6052,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6048,
                                    "name": "err",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6041,
                                    "src": "1761:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$5353",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 6049,
                                        "name": "ECDSA",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5693,
                                        "src": "1768:5:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_ECDSA_$5693_$",
                                          "typeString": "type(library ECDSA)"
                                        }
                                      },
                                      "id": 6050,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "1774:12:22",
                                      "memberName": "RecoverError",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 5353,
                                      "src": "1768:18:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_RecoverError_$5353_$",
                                        "typeString": "type(enum ECDSA.RecoverError)"
                                      }
                                    },
                                    "id": 6051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "1787:7:22",
                                    "memberName": "NoError",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5349,
                                    "src": "1768:26:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_RecoverError_$5353",
                                      "typeString": "enum ECDSA.RecoverError"
                                    }
                                  },
                                  "src": "1761:33:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 6055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6053,
                                    "name": "recovered",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6038,
                                    "src": "1798:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 6054,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6023,
                                    "src": "1811:6:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "1798:19:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1761:56:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "functionReturnParameters": 6031,
                              "id": 6057,
                              "nodeType": "Return",
                              "src": "1754:63:22"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6021,
                    "nodeType": "StructuredDocumentation",
                    "src": "900:589:22",
                    "text": " @dev Checks if a signature is valid for a given signer and data hash. If the signer has code, the\n signature is validated against it using ERC-1271, otherwise it's validated using `ECDSA.recover`.\n NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n change through time. It could return true at block N and false at block N+1 (or the opposite).\n NOTE: For an extended version of this function that supports ERC-7913 signatures, see {isValidSignatureNow-bytes-bytes32-bytes-}."
                  },
                  "id": 6068,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSignatureNow",
                  "nameLocation": "1503:19:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6028,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6023,
                        "mutability": "mutable",
                        "name": "signer",
                        "nameLocation": "1531:6:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6068,
                        "src": "1523:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6022,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1523:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6025,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "1547:4:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6068,
                        "src": "1539:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6024,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1539:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6027,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "1566:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6068,
                        "src": "1553:22:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6026,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1553:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1522:54:22"
                  },
                  "returnParameters": {
                    "id": 6031,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6030,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6068,
                        "src": "1600:4:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6029,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1600:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1599:6:22"
                  },
                  "scope": 6310,
                  "src": "1494:429:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6119,
                    "nodeType": "Block",
                    "src": "2479:309:22",
                    "statements": [
                      {
                        "assignments": [
                          6081,
                          6083
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6081,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2495:7:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 6119,
                            "src": "2490:12:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6080,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2490:4:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6083,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "2517:6:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 6119,
                            "src": "2504:19:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6082,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2504:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6095,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 6088,
                                    "name": "IERC1271",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2996,
                                    "src": "2573:8:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1271_$2996_$",
                                      "typeString": "type(contract IERC1271)"
                                    }
                                  },
                                  "id": 6089,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "2582:16:22",
                                  "memberName": "isValidSignature",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2995,
                                  "src": "2573:25:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_declaration_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function IERC1271.isValidSignature(bytes32,bytes calldata) view returns (bytes4)"
                                  }
                                },
                                {
                                  "components": [
                                    {
                                      "id": 6090,
                                      "name": "hash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6073,
                                      "src": "2601:4:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 6091,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6075,
                                      "src": "2607:9:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "id": 6092,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2600:17:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$",
                                    "typeString": "tuple(bytes32,bytes memory)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_function_declaration_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function IERC1271.isValidSignature(bytes32,bytes calldata) view returns (bytes4)"
                                  },
                                  {
                                    "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$",
                                    "typeString": "tuple(bytes32,bytes memory)"
                                  }
                                ],
                                "expression": {
                                  "id": 6086,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2558:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 6087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2562:10:22",
                                "memberName": "encodeCall",
                                "nodeType": "MemberAccess",
                                "src": "2558:14:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 6093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2558:60:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 6084,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6071,
                              "src": "2527:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6085,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2534:10:22",
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "2527:17:22",
                            "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": 6094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2527:101:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2489:139:22"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 6116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 6101,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6096,
                                  "name": "success",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6081,
                                  "src": "2646:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 6097,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6083,
                                      "src": "2669:6:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 6098,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2676:6:22",
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "2669:13:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "hexValue": "3332",
                                    "id": 6099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2686:2:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  },
                                  "src": "2669:19:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2646:42:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 6115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 6104,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6083,
                                      "src": "2715:6:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "components": [
                                        {
                                          "id": 6106,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2724:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes32_$",
                                            "typeString": "type(bytes32)"
                                          },
                                          "typeName": {
                                            "id": 6105,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2724:7:22",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "id": 6107,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2723:9:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6102,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "2704:3:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 6103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "2708:6:22",
                                    "memberName": "decode",
                                    "nodeType": "MemberAccess",
                                    "src": "2704:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 6108,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2704:29:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "expression": {
                                          "id": 6111,
                                          "name": "IERC1271",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2996,
                                          "src": "2745:8:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC1271_$2996_$",
                                            "typeString": "type(contract IERC1271)"
                                          }
                                        },
                                        "id": 6112,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "2754:16:22",
                                        "memberName": "isValidSignature",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2995,
                                        "src": "2745:25:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_declaration_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function IERC1271.isValidSignature(bytes32,bytes calldata) view returns (bytes4)"
                                        }
                                      },
                                      "id": 6113,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "2771:8:22",
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "src": "2745:34:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    ],
                                    "id": 6110,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2737:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes32_$",
                                      "typeString": "type(bytes32)"
                                    },
                                    "typeName": {
                                      "id": 6109,
                                      "name": "bytes32",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2737:7:22",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 6114,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2737:43:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2704:76:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2646:134:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 6117,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2645:136:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 6079,
                        "id": 6118,
                        "nodeType": "Return",
                        "src": "2638:143:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6069,
                    "nodeType": "StructuredDocumentation",
                    "src": "1929:396:22",
                    "text": " @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\n against the signer smart contract using ERC-1271.\n NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n change through time. It could return true at block N and false at block N+1 (or the opposite)."
                  },
                  "id": 6120,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidERC1271SignatureNow",
                  "nameLocation": "2339:26:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6071,
                        "mutability": "mutable",
                        "name": "signer",
                        "nameLocation": "2383:6:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6120,
                        "src": "2375:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2375:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6073,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "2407:4:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6120,
                        "src": "2399:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6072,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2399:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6075,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2434:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6120,
                        "src": "2421:22:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6074,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2421:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2365:84:22"
                  },
                  "returnParameters": {
                    "id": 6079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6078,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6120,
                        "src": "2473:4:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6077,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2473:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2472:6:22"
                  },
                  "scope": 6310,
                  "src": "2330:458:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6208,
                    "nodeType": "Block",
                    "src": "3692:595:22",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6132,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6123,
                              "src": "3706:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 6133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3713:6:22",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3706:13:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "3230",
                            "id": 6134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3722:2:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_20_by_1",
                              "typeString": "int_const 20"
                            },
                            "value": "20"
                          },
                          "src": "3706:18:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 6139,
                                "name": "signer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6123,
                                "src": "3773:6:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 6140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3780:6:22",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3773:13:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "3230",
                              "id": 6141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3790:2:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_20_by_1",
                                "typeString": "int_const 20"
                              },
                              "value": "20"
                            },
                            "src": "3773:19:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 6205,
                            "nodeType": "Block",
                            "src": "3894:387:22",
                            "statements": [
                              {
                                "assignments": [
                                  6157,
                                  6159
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 6157,
                                    "mutability": "mutable",
                                    "name": "success",
                                    "nameLocation": "3914:7:22",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6205,
                                    "src": "3909:12:22",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "typeName": {
                                      "id": 6156,
                                      "name": "bool",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3909:4:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "visibility": "internal"
                                  },
                                  {
                                    "constant": false,
                                    "id": 6159,
                                    "mutability": "mutable",
                                    "name": "result",
                                    "nameLocation": "3936:6:22",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6205,
                                    "src": "3923:19:22",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes"
                                    },
                                    "typeName": {
                                      "id": 6158,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3923:5:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 6181,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 6170,
                                            "name": "IERC7913SignatureVerifier",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3037,
                                            "src": "4014:25:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC7913SignatureVerifier_$3037_$",
                                              "typeString": "type(contract IERC7913SignatureVerifier)"
                                            }
                                          },
                                          "id": 6171,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberLocation": "4040:6:22",
                                          "memberName": "verify",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3036,
                                          "src": "4014:32:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_declaration_view$_t_bytes_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                            "typeString": "function IERC7913SignatureVerifier.verify(bytes calldata,bytes32,bytes calldata) view returns (bytes4)"
                                          }
                                        },
                                        {
                                          "components": [
                                            {
                                              "arguments": [
                                                {
                                                  "hexValue": "3230",
                                                  "id": 6174,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "4062:2:22",
                                                  "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"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 6172,
                                                  "name": "signer",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6123,
                                                  "src": "4049:6:22",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                },
                                                "id": 6173,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberLocation": "4056:5:22",
                                                "memberName": "slice",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3469,
                                                "src": "4049:12:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$attached_to$_t_bytes_memory_ptr_$",
                                                  "typeString": "function (bytes memory,uint256) pure returns (bytes memory)"
                                                }
                                              },
                                              "id": 6175,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4049:16:22",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "id": 6176,
                                              "name": "hash",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6125,
                                              "src": "4067:4:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "id": 6177,
                                              "name": "signature",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6127,
                                              "src": "4073:9:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "id": 6178,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4048:35:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$",
                                            "typeString": "tuple(bytes memory,bytes32,bytes memory)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_function_declaration_view$_t_bytes_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                            "typeString": "function IERC7913SignatureVerifier.verify(bytes calldata,bytes32,bytes calldata) view returns (bytes4)"
                                          },
                                          {
                                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$",
                                            "typeString": "tuple(bytes memory,bytes32,bytes memory)"
                                          }
                                        ],
                                        "expression": {
                                          "id": 6168,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "3999:3:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 6169,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "4003:10:22",
                                        "memberName": "encodeCall",
                                        "nodeType": "MemberAccess",
                                        "src": "3999:14:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 6179,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3999:85:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 6164,
                                              "name": "signer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6123,
                                              "src": "3962:6:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 6163,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3954:7:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes20_$",
                                              "typeString": "type(bytes20)"
                                            },
                                            "typeName": {
                                              "id": 6162,
                                              "name": "bytes20",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3954:7:22",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 6165,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3954:15:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes20",
                                            "typeString": "bytes20"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes20",
                                            "typeString": "bytes20"
                                          }
                                        ],
                                        "id": 6161,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3946:7:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 6160,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3946:7:22",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 6166,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3946:24:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 6167,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "3971:10:22",
                                    "memberName": "staticcall",
                                    "nodeType": "MemberAccess",
                                    "src": "3946:35:22",
                                    "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": 6180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3946:152:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "tuple(bool,bytes memory)"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "3908:190:22"
                              },
                              {
                                "expression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 6202,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 6187,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 6182,
                                          "name": "success",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6157,
                                          "src": "4120:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6186,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 6183,
                                              "name": "result",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6159,
                                              "src": "4147:6:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 6184,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "4154:6:22",
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "4147:13:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "hexValue": "3332",
                                            "id": 6185,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4164:2:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "src": "4147:19:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "4120:46:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "id": 6201,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 6190,
                                              "name": "result",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6159,
                                              "src": "4197:6:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "components": [
                                                {
                                                  "id": 6192,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "4206:7:22",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                                    "typeString": "type(bytes32)"
                                                  },
                                                  "typeName": {
                                                    "id": 6191,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4206:7:22",
                                                    "typeDescriptions": {}
                                                  }
                                                }
                                              ],
                                              "id": 6193,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "4205:9:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes32_$",
                                                "typeString": "type(bytes32)"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              },
                                              {
                                                "typeIdentifier": "t_type$_t_bytes32_$",
                                                "typeString": "type(bytes32)"
                                              }
                                            ],
                                            "expression": {
                                              "id": 6188,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "4186:3:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 6189,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "4190:6:22",
                                            "memberName": "decode",
                                            "nodeType": "MemberAccess",
                                            "src": "4186:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 6194,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4186:29:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "expression": {
                                                  "id": 6197,
                                                  "name": "IERC7913SignatureVerifier",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3037,
                                                  "src": "4227:25:22",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC7913SignatureVerifier_$3037_$",
                                                    "typeString": "type(contract IERC7913SignatureVerifier)"
                                                  }
                                                },
                                                "id": 6198,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberLocation": "4253:6:22",
                                                "memberName": "verify",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3036,
                                                "src": "4227:32:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_declaration_view$_t_bytes_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                                  "typeString": "function IERC7913SignatureVerifier.verify(bytes calldata,bytes32,bytes calldata) view returns (bytes4)"
                                                }
                                              },
                                              "id": 6199,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberLocation": "4260:8:22",
                                              "memberName": "selector",
                                              "nodeType": "MemberAccess",
                                              "src": "4227:41:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            ],
                                            "id": 6196,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "4219:7:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes32_$",
                                              "typeString": "type(bytes32)"
                                            },
                                            "typeName": {
                                              "id": 6195,
                                              "name": "bytes32",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "4219:7:22",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 6200,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4219:50:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "src": "4186:83:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "4120:149:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "id": 6203,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4119:151:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "functionReturnParameters": 6131,
                                "id": 6204,
                                "nodeType": "Return",
                                "src": "4112:158:22"
                              }
                            ]
                          },
                          "id": 6206,
                          "nodeType": "IfStatement",
                          "src": "3769:512:22",
                          "trueBody": {
                            "id": 6155,
                            "nodeType": "Block",
                            "src": "3794:94:22",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 6148,
                                              "name": "signer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6123,
                                              "src": "3851:6:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 6147,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3843:7:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes20_$",
                                              "typeString": "type(bytes20)"
                                            },
                                            "typeName": {
                                              "id": 6146,
                                              "name": "bytes20",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3843:7:22",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 6149,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3843:15:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes20",
                                            "typeString": "bytes20"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes20",
                                            "typeString": "bytes20"
                                          }
                                        ],
                                        "id": 6145,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3835:7:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 6144,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3835:7:22",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 6150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3835:24:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 6151,
                                      "name": "hash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6125,
                                      "src": "3861:4:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 6152,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6127,
                                      "src": "3867:9:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 6143,
                                    "name": "isValidSignatureNow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      6068,
                                      6209
                                    ],
                                    "referencedDeclaration": 6068,
                                    "src": "3815:19:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                      "typeString": "function (address,bytes32,bytes memory) view returns (bool)"
                                    }
                                  },
                                  "id": 6153,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3815:62:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "functionReturnParameters": 6131,
                                "id": 6154,
                                "nodeType": "Return",
                                "src": "3808:69:22"
                              }
                            ]
                          }
                        },
                        "id": 6207,
                        "nodeType": "IfStatement",
                        "src": "3702:579:22",
                        "trueBody": {
                          "id": 6138,
                          "nodeType": "Block",
                          "src": "3726:37:22",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 6136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3747:5:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 6131,
                              "id": 6137,
                              "nodeType": "Return",
                              "src": "3740:12:22"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6121,
                    "nodeType": "StructuredDocumentation",
                    "src": "2794:746:22",
                    "text": " @dev Verifies a signature for a given ERC-7913 signer and hash.\n The signer is a `bytes` object that is the concatenation of an address and optionally a key:\n `verifier || key`. A signer must be at least 20 bytes long.\n Verification is done as follows:\n * If `signer.length < 20`: verification fails\n * If `signer.length == 20`: verification is done using {isValidSignatureNow}\n * Otherwise: verification is done using {IERC7913SignatureVerifier}\n NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n change through time. It could return true at block N and false at block N+1 (or the opposite)."
                  },
                  "id": 6209,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSignatureNow",
                  "nameLocation": "3554:19:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6128,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6123,
                        "mutability": "mutable",
                        "name": "signer",
                        "nameLocation": "3596:6:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6209,
                        "src": "3583:19:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6122,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3583:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6125,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "3620:4:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6209,
                        "src": "3612:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6124,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3612:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6127,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "3647:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6209,
                        "src": "3634:22:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6126,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3634:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3573:89:22"
                  },
                  "returnParameters": {
                    "id": 6131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6130,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6209,
                        "src": "3686:4:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6129,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3686:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3685:6:22"
                  },
                  "scope": 6310,
                  "src": "3545:742:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6308,
                    "nodeType": "Block",
                    "src": "5063:982:22",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6223,
                              "name": "signers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6215,
                              "src": "5077:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            "id": 6224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5085:6:22",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5077:14:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 6225,
                              "name": "signatures",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6218,
                              "src": "5095:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            "id": 6226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5106:6:22",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5095:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5077:35:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6230,
                        "nodeType": "IfStatement",
                        "src": "5073:53:22",
                        "trueBody": {
                          "expression": {
                            "hexValue": "66616c7365",
                            "id": 6228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5121:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "functionReturnParameters": 6222,
                          "id": 6229,
                          "nodeType": "Return",
                          "src": "5114:12:22"
                        }
                      },
                      {
                        "assignments": [
                          6232
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6232,
                            "mutability": "mutable",
                            "name": "lastId",
                            "nameLocation": "5145:6:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 6308,
                            "src": "5137:14:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 6231,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5137:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6237,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 6235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5162:1:22",
                              "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": 6234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5154:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": {
                              "id": 6233,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5154:7:22",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 6236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5154:10:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5137:27:22"
                      },
                      {
                        "body": {
                          "id": 6304,
                          "nodeType": "Block",
                          "src": "5220:797:22",
                          "statements": [
                            {
                              "assignments": [
                                6250
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6250,
                                  "mutability": "mutable",
                                  "name": "signer",
                                  "nameLocation": "5247:6:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6304,
                                  "src": "5234:19:22",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 6249,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5234:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6254,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 6251,
                                  "name": "signers",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6215,
                                  "src": "5256:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "bytes memory[] memory"
                                  }
                                },
                                "id": 6253,
                                "indexExpression": {
                                  "id": 6252,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6239,
                                  "src": "5264:1:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5256:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5234:32:22"
                            },
                            {
                              "condition": {
                                "id": 6262,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "5354:49:22",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "id": 6256,
                                      "name": "signer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6250,
                                      "src": "5375:6:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 6257,
                                      "name": "hash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6212,
                                      "src": "5383:4:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 6258,
                                        "name": "signatures",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6218,
                                        "src": "5389:10:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "bytes memory[] memory"
                                        }
                                      },
                                      "id": 6260,
                                      "indexExpression": {
                                        "id": 6259,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6239,
                                        "src": "5400:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5389:13:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 6255,
                                    "name": "isValidSignatureNow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      6068,
                                      6209
                                    ],
                                    "referencedDeclaration": 6209,
                                    "src": "5355:19:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                      "typeString": "function (bytes memory,bytes32,bytes memory) view returns (bool)"
                                    }
                                  },
                                  "id": 6261,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5355:48:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6265,
                              "nodeType": "IfStatement",
                              "src": "5350:67:22",
                              "trueBody": {
                                "expression": {
                                  "hexValue": "66616c7365",
                                  "id": 6263,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5412:5:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "functionReturnParameters": 6222,
                                "id": 6264,
                                "nodeType": "Return",
                                "src": "5405:12:22"
                              }
                            },
                            {
                              "assignments": [
                                6267
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6267,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nameLocation": "5440:2:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6304,
                                  "src": "5432:10:22",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 6266,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5432:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6271,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 6269,
                                    "name": "signer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6250,
                                    "src": "5455:6:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 6268,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "5445:9:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 6270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5445:17:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5432:30:22"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 6274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6272,
                                  "name": "lastId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6232,
                                  "src": "5581:6:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 6273,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6267,
                                  "src": "5590:2:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "5581:11:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 6302,
                                "nodeType": "Block",
                                "src": "5644:363:22",
                                "statements": [
                                  {
                                    "body": {
                                      "id": 6300,
                                      "nodeType": "Block",
                                      "src": "5907:86:22",
                                      "statements": [
                                        {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            "id": 6296,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 6290,
                                              "name": "id",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6267,
                                              "src": "5933:2:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "baseExpression": {
                                                    "id": 6292,
                                                    "name": "signers",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6215,
                                                    "src": "5949:7:22",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                      "typeString": "bytes memory[] memory"
                                                    }
                                                  },
                                                  "id": 6294,
                                                  "indexExpression": {
                                                    "id": 6293,
                                                    "name": "j",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6281,
                                                    "src": "5957:1:22",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "5949:10:22",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                ],
                                                "id": 6291,
                                                "name": "keccak256",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -8,
                                                "src": "5939:9:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                                }
                                              },
                                              "id": 6295,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "5939:21:22",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "src": "5933:27:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 6299,
                                          "nodeType": "IfStatement",
                                          "src": "5929:45:22",
                                          "trueBody": {
                                            "expression": {
                                              "hexValue": "66616c7365",
                                              "id": 6297,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5969:5:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "false"
                                            },
                                            "functionReturnParameters": 6222,
                                            "id": 6298,
                                            "nodeType": "Return",
                                            "src": "5962:12:22"
                                          }
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6286,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6284,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6281,
                                        "src": "5895:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 6285,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6239,
                                        "src": "5899:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5895:5:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 6301,
                                    "initializationExpression": {
                                      "assignments": [
                                        6281
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 6281,
                                          "mutability": "mutable",
                                          "name": "j",
                                          "nameLocation": "5888:1:22",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 6301,
                                          "src": "5880:9:22",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "typeName": {
                                            "id": 6280,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5880:7:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 6283,
                                      "initialValue": {
                                        "hexValue": "30",
                                        "id": 6282,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5892:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "5880:13:22"
                                    },
                                    "isSimpleCounterLoop": true,
                                    "loopExpression": {
                                      "expression": {
                                        "id": 6288,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": true,
                                        "src": "5902:3:22",
                                        "subExpression": {
                                          "id": 6287,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6281,
                                          "src": "5904:1:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6289,
                                      "nodeType": "ExpressionStatement",
                                      "src": "5902:3:22"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "5875:118:22"
                                  }
                                ]
                              },
                              "id": 6303,
                              "nodeType": "IfStatement",
                              "src": "5577:430:22",
                              "trueBody": {
                                "id": 6279,
                                "nodeType": "Block",
                                "src": "5594:44:22",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6277,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6275,
                                        "name": "lastId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6232,
                                        "src": "5612:6:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 6276,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6267,
                                        "src": "5621:2:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "5612:11:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 6278,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5612:11:22"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6242,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6239,
                            "src": "5195:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 6243,
                              "name": "signers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6215,
                              "src": "5199:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                "typeString": "bytes memory[] memory"
                              }
                            },
                            "id": 6244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5207:6:22",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5199:14:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5195:18:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6305,
                        "initializationExpression": {
                          "assignments": [
                            6239
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6239,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "5188:1:22",
                              "nodeType": "VariableDeclaration",
                              "scope": 6305,
                              "src": "5180:9:22",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6238,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5180:7:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 6241,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 6240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5192:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5180:13:22"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 6247,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "5215:3:22",
                            "subExpression": {
                              "id": 6246,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6239,
                              "src": "5217:1:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6248,
                          "nodeType": "ExpressionStatement",
                          "src": "5215:3:22"
                        },
                        "nodeType": "ForStatement",
                        "src": "5175:842:22"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 6306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6034:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 6222,
                        "id": 6307,
                        "nodeType": "Return",
                        "src": "6027:11:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6210,
                    "nodeType": "StructuredDocumentation",
                    "src": "4293:610:22",
                    "text": " @dev Verifies multiple ERC-7913 `signatures` for a given `hash` using a set of `signers`.\n Returns `false` if the number of signers and signatures is not the same.\n The signers should be ordered by their `keccak256` hash to ensure efficient duplication check. Unordered\n signers are supported, but the uniqueness check will be more expensive.\n NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n change through time. It could return true at block N and false at block N+1 (or the opposite)."
                  },
                  "id": 6309,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "areValidSignaturesNow",
                  "nameLocation": "4917:21:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6219,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6212,
                        "mutability": "mutable",
                        "name": "hash",
                        "nameLocation": "4956:4:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6309,
                        "src": "4948:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6211,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4948:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6215,
                        "mutability": "mutable",
                        "name": "signers",
                        "nameLocation": "4985:7:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6309,
                        "src": "4970:22:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6213,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "4970:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 6214,
                          "nodeType": "ArrayTypeName",
                          "src": "4970:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6218,
                        "mutability": "mutable",
                        "name": "signatures",
                        "nameLocation": "5017:10:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 6309,
                        "src": "5002:25:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6216,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "5002:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 6217,
                          "nodeType": "ArrayTypeName",
                          "src": "5002:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4938:95:22"
                  },
                  "returnParameters": {
                    "id": 6222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6221,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6309,
                        "src": "5057:4:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6220,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5057:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5056:6:22"
                  },
                  "scope": 6310,
                  "src": "4908:1137:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 6311,
              "src": "841:5206:22",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "123:5925:22"
        },
        "id": 22
      },
      "@openzeppelin/contracts/utils/math/Math.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol",
          "exportedSymbols": {
            "Math": [
              7931
            ],
            "Panic": [
              3602
            ],
            "SafeCast": [
              9696
            ]
          },
          "id": 7932,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6312,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "103:24:23"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Panic.sol",
              "file": "../Panic.sol",
              "id": 6314,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7932,
              "sourceUnit": 3603,
              "src": "129:35:23",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6313,
                    "name": "Panic",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3602,
                    "src": "137:5:23",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
              "file": "./SafeCast.sol",
              "id": 6316,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7932,
              "sourceUnit": 9697,
              "src": "165:40:23",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6315,
                    "name": "SafeCast",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9696,
                    "src": "173:8:23",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "Math",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 6317,
                "nodeType": "StructuredDocumentation",
                "src": "207:73:23",
                "text": " @dev Standard math utilities missing in the Solidity language."
              },
              "fullyImplemented": true,
              "id": 7931,
              "linearizedBaseContracts": [
                7931
              ],
              "name": "Math",
              "nameLocation": "289:4:23",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "Math.Rounding",
                  "id": 6322,
                  "members": [
                    {
                      "id": 6318,
                      "name": "Floor",
                      "nameLocation": "324:5:23",
                      "nodeType": "EnumValue",
                      "src": "324:5:23"
                    },
                    {
                      "id": 6319,
                      "name": "Ceil",
                      "nameLocation": "367:4:23",
                      "nodeType": "EnumValue",
                      "src": "367:4:23"
                    },
                    {
                      "id": 6320,
                      "name": "Trunc",
                      "nameLocation": "409:5:23",
                      "nodeType": "EnumValue",
                      "src": "409:5:23"
                    },
                    {
                      "id": 6321,
                      "name": "Expand",
                      "nameLocation": "439:6:23",
                      "nodeType": "EnumValue",
                      "src": "439:6:23"
                    }
                  ],
                  "name": "Rounding",
                  "nameLocation": "305:8:23",
                  "nodeType": "EnumDefinition",
                  "src": "300:169:23"
                },
                {
                  "body": {
                    "id": 6335,
                    "nodeType": "Block",
                    "src": "731:112:23",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "766:71:23",
                          "nodeType": "YulBlock",
                          "src": "766:71:23",
                          "statements": [
                            {
                              "nativeSrc": "780:16:23",
                              "nodeType": "YulAssignment",
                              "src": "780:16:23",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "a",
                                    "nativeSrc": "791:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "791:1:23"
                                  },
                                  {
                                    "name": "b",
                                    "nativeSrc": "794:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "794:1:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "787:3:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "787:3:23"
                                },
                                "nativeSrc": "787:9:23",
                                "nodeType": "YulFunctionCall",
                                "src": "787:9:23"
                              },
                              "variableNames": [
                                {
                                  "name": "low",
                                  "nativeSrc": "780:3:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "780:3:23"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "809:18:23",
                              "nodeType": "YulAssignment",
                              "src": "809:18:23",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "low",
                                    "nativeSrc": "820:3:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "820:3:23"
                                  },
                                  {
                                    "name": "a",
                                    "nativeSrc": "825:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "825:1:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nativeSrc": "817:2:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "817:2:23"
                                },
                                "nativeSrc": "817:10:23",
                                "nodeType": "YulFunctionCall",
                                "src": "817:10:23"
                              },
                              "variableNames": [
                                {
                                  "name": "high",
                                  "nativeSrc": "809:4:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "809:4:23"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 6325,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "791:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6325,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "825:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6327,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "794:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6330,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "809:4:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6332,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "780:3:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6332,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "820:3:23",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 6334,
                        "nodeType": "InlineAssembly",
                        "src": "741:96:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6323,
                    "nodeType": "StructuredDocumentation",
                    "src": "475:163:23",
                    "text": " @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."
                  },
                  "id": 6336,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add512",
                  "nameLocation": "652:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6325,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "667:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6336,
                        "src": "659:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "659:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6327,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "678:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6336,
                        "src": "670:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6326,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "658:22:23"
                  },
                  "returnParameters": {
                    "id": 6333,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6330,
                        "mutability": "mutable",
                        "name": "high",
                        "nameLocation": "712:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6336,
                        "src": "704:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "704:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6332,
                        "mutability": "mutable",
                        "name": "low",
                        "nameLocation": "726:3:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6336,
                        "src": "718:11:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6331,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "718:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "703:27:23"
                  },
                  "scope": 7931,
                  "src": "643:200:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6349,
                    "nodeType": "Block",
                    "src": "1115:462:23",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "1437:134:23",
                          "nodeType": "YulBlock",
                          "src": "1437:134:23",
                          "statements": [
                            {
                              "nativeSrc": "1451:30:23",
                              "nodeType": "YulVariableDeclaration",
                              "src": "1451:30:23",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "a",
                                    "nativeSrc": "1468:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "1468:1:23"
                                  },
                                  {
                                    "name": "b",
                                    "nativeSrc": "1471:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "1471:1:23"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1478:1:23",
                                        "nodeType": "YulLiteral",
                                        "src": "1478:1:23",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "1474:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "1474:3:23"
                                    },
                                    "nativeSrc": "1474:6:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1474:6:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mulmod",
                                  "nativeSrc": "1461:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "1461:6:23"
                                },
                                "nativeSrc": "1461:20:23",
                                "nodeType": "YulFunctionCall",
                                "src": "1461:20:23"
                              },
                              "variables": [
                                {
                                  "name": "mm",
                                  "nativeSrc": "1455:2:23",
                                  "nodeType": "YulTypedName",
                                  "src": "1455:2:23",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "1494:16:23",
                              "nodeType": "YulAssignment",
                              "src": "1494:16:23",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "a",
                                    "nativeSrc": "1505:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "1505:1:23"
                                  },
                                  {
                                    "name": "b",
                                    "nativeSrc": "1508:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "1508:1:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nativeSrc": "1501:3:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "1501:3:23"
                                },
                                "nativeSrc": "1501:9:23",
                                "nodeType": "YulFunctionCall",
                                "src": "1501:9:23"
                              },
                              "variableNames": [
                                {
                                  "name": "low",
                                  "nativeSrc": "1494:3:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "1494:3:23"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "1523:38:23",
                              "nodeType": "YulAssignment",
                              "src": "1523:38:23",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "mm",
                                        "nativeSrc": "1539:2:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "1539:2:23"
                                      },
                                      {
                                        "name": "low",
                                        "nativeSrc": "1543:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "1543:3:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "1535:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "1535:3:23"
                                    },
                                    "nativeSrc": "1535:12:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1535:12:23"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "mm",
                                        "nativeSrc": "1552:2:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "1552:2:23"
                                      },
                                      {
                                        "name": "low",
                                        "nativeSrc": "1556:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "1556:3:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nativeSrc": "1549:2:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "1549:2:23"
                                    },
                                    "nativeSrc": "1549:11:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1549:11:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "1531:3:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "1531:3:23"
                                },
                                "nativeSrc": "1531:30:23",
                                "nodeType": "YulFunctionCall",
                                "src": "1531:30:23"
                              },
                              "variableNames": [
                                {
                                  "name": "high",
                                  "nativeSrc": "1523:4:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "1523:4:23"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 6339,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1468:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6339,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1505:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6341,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1471:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6341,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1508:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6344,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1523:4:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6346,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1494:3:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6346,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1543:3:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6346,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1556:3:23",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 6348,
                        "nodeType": "InlineAssembly",
                        "src": "1412:159:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6337,
                    "nodeType": "StructuredDocumentation",
                    "src": "849:173:23",
                    "text": " @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."
                  },
                  "id": 6350,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul512",
                  "nameLocation": "1036:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6339,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1051:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6350,
                        "src": "1043:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6338,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1043:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6341,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1062:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6350,
                        "src": "1054:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1054:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1042:22:23"
                  },
                  "returnParameters": {
                    "id": 6347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6344,
                        "mutability": "mutable",
                        "name": "high",
                        "nameLocation": "1096:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6350,
                        "src": "1088:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6343,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1088:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6346,
                        "mutability": "mutable",
                        "name": "low",
                        "nameLocation": "1110:3:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6350,
                        "src": "1102:11:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6345,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1102:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1087:27:23"
                  },
                  "scope": 7931,
                  "src": "1027:550:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6384,
                    "nodeType": "Block",
                    "src": "1784:149:23",
                    "statements": [
                      {
                        "id": 6383,
                        "nodeType": "UncheckedBlock",
                        "src": "1794:133:23",
                        "statements": [
                          {
                            "assignments": [
                              6363
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6363,
                                "mutability": "mutable",
                                "name": "c",
                                "nameLocation": "1826:1:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6383,
                                "src": "1818:9:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6362,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1818:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6367,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6364,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6353,
                                "src": "1830:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 6365,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6355,
                                "src": "1834:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1830:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1818:17:23"
                          },
                          {
                            "expression": {
                              "id": 6372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6368,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6358,
                                "src": "1849:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6369,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6363,
                                  "src": "1859:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "id": 6370,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6353,
                                  "src": "1864:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1859:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1849:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6373,
                            "nodeType": "ExpressionStatement",
                            "src": "1849:16:23"
                          },
                          {
                            "expression": {
                              "id": 6381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6374,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6360,
                                "src": "1879:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6375,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6363,
                                  "src": "1888:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 6378,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6358,
                                      "src": "1908:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6376,
                                      "name": "SafeCast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9696,
                                      "src": "1892:8:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                        "typeString": "type(library SafeCast)"
                                      }
                                    },
                                    "id": 6377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "1901:6:23",
                                    "memberName": "toUint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9695,
                                    "src": "1892:15:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (bool) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1892:24:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1888:28:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1879:37:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6382,
                            "nodeType": "ExpressionStatement",
                            "src": "1879:37:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6351,
                    "nodeType": "StructuredDocumentation",
                    "src": "1583:105:23",
                    "text": " @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."
                  },
                  "id": 6385,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryAdd",
                  "nameLocation": "1702:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6356,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6353,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1717:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6385,
                        "src": "1709:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6352,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1709:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6355,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1728:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6385,
                        "src": "1720:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1720:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1708:22:23"
                  },
                  "returnParameters": {
                    "id": 6361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6358,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "1759:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6385,
                        "src": "1754:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6357,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1754:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6360,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "1776:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6385,
                        "src": "1768:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6359,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1768:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1753:30:23"
                  },
                  "scope": 7931,
                  "src": "1693:240:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6419,
                    "nodeType": "Block",
                    "src": "2143:149:23",
                    "statements": [
                      {
                        "id": 6418,
                        "nodeType": "UncheckedBlock",
                        "src": "2153:133:23",
                        "statements": [
                          {
                            "assignments": [
                              6398
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6398,
                                "mutability": "mutable",
                                "name": "c",
                                "nameLocation": "2185:1:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6418,
                                "src": "2177:9:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6397,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2177:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6402,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6399,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6388,
                                "src": "2189:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 6400,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6390,
                                "src": "2193:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2189:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2177:17:23"
                          },
                          {
                            "expression": {
                              "id": 6407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6403,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6393,
                                "src": "2208:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6404,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6398,
                                  "src": "2218:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 6405,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6388,
                                  "src": "2223:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2218:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2208:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6408,
                            "nodeType": "ExpressionStatement",
                            "src": "2208:16:23"
                          },
                          {
                            "expression": {
                              "id": 6416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6409,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6395,
                                "src": "2238:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6410,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6398,
                                  "src": "2247:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 6413,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6393,
                                      "src": "2267:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6411,
                                      "name": "SafeCast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9696,
                                      "src": "2251:8:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                        "typeString": "type(library SafeCast)"
                                      }
                                    },
                                    "id": 6412,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2260:6:23",
                                    "memberName": "toUint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9695,
                                    "src": "2251:15:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (bool) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2251:24:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2247:28:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2238:37:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6417,
                            "nodeType": "ExpressionStatement",
                            "src": "2238:37:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6386,
                    "nodeType": "StructuredDocumentation",
                    "src": "1939:108:23",
                    "text": " @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."
                  },
                  "id": 6420,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "trySub",
                  "nameLocation": "2061:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6388,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "2076:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6420,
                        "src": "2068:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2068:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6390,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "2087:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6420,
                        "src": "2079:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6389,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2079:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2067:22:23"
                  },
                  "returnParameters": {
                    "id": 6396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6393,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "2118:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6420,
                        "src": "2113:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6392,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2113:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6395,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "2135:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6420,
                        "src": "2127:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2127:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2112:30:23"
                  },
                  "scope": 7931,
                  "src": "2052:240:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6449,
                    "nodeType": "Block",
                    "src": "2505:391:23",
                    "statements": [
                      {
                        "id": 6448,
                        "nodeType": "UncheckedBlock",
                        "src": "2515:375:23",
                        "statements": [
                          {
                            "assignments": [
                              6433
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6433,
                                "mutability": "mutable",
                                "name": "c",
                                "nameLocation": "2547:1:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6448,
                                "src": "2539:9:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6432,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2539:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6437,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6434,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6423,
                                "src": "2551:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 6435,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6425,
                                "src": "2555:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2551:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2539:17:23"
                          },
                          {
                            "AST": {
                              "nativeSrc": "2595:188:23",
                              "nodeType": "YulBlock",
                              "src": "2595:188:23",
                              "statements": [
                                {
                                  "nativeSrc": "2727:42:23",
                                  "nodeType": "YulAssignment",
                                  "src": "2727:42:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "c",
                                                "nativeSrc": "2748:1:23",
                                                "nodeType": "YulIdentifier",
                                                "src": "2748:1:23"
                                              },
                                              {
                                                "name": "a",
                                                "nativeSrc": "2751:1:23",
                                                "nodeType": "YulIdentifier",
                                                "src": "2751:1:23"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nativeSrc": "2744:3:23",
                                              "nodeType": "YulIdentifier",
                                              "src": "2744:3:23"
                                            },
                                            "nativeSrc": "2744:9:23",
                                            "nodeType": "YulFunctionCall",
                                            "src": "2744:9:23"
                                          },
                                          {
                                            "name": "b",
                                            "nativeSrc": "2755:1:23",
                                            "nodeType": "YulIdentifier",
                                            "src": "2755:1:23"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "eq",
                                          "nativeSrc": "2741:2:23",
                                          "nodeType": "YulIdentifier",
                                          "src": "2741:2:23"
                                        },
                                        "nativeSrc": "2741:16:23",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2741:16:23"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "a",
                                            "nativeSrc": "2766:1:23",
                                            "nodeType": "YulIdentifier",
                                            "src": "2766:1:23"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nativeSrc": "2759:6:23",
                                          "nodeType": "YulIdentifier",
                                          "src": "2759:6:23"
                                        },
                                        "nativeSrc": "2759:9:23",
                                        "nodeType": "YulFunctionCall",
                                        "src": "2759:9:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nativeSrc": "2738:2:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "2738:2:23"
                                    },
                                    "nativeSrc": "2738:31:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2738:31:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "success",
                                      "nativeSrc": "2727:7:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "2727:7:23"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "cancun",
                            "externalReferences": [
                              {
                                "declaration": 6423,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2751:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6423,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2766:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2755:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6433,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2748:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6428,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2727:7:23",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 6438,
                            "nodeType": "InlineAssembly",
                            "src": "2570:213:23"
                          },
                          {
                            "expression": {
                              "id": 6446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6439,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6430,
                                "src": "2842:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6440,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6433,
                                  "src": "2851:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 6443,
                                      "name": "success",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6428,
                                      "src": "2871:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 6441,
                                      "name": "SafeCast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9696,
                                      "src": "2855:8:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                        "typeString": "type(library SafeCast)"
                                      }
                                    },
                                    "id": 6442,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberLocation": "2864:6:23",
                                    "memberName": "toUint",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9695,
                                    "src": "2855:15:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (bool) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6444,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2855:24:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2851:28:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2842:37:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6447,
                            "nodeType": "ExpressionStatement",
                            "src": "2842:37:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6421,
                    "nodeType": "StructuredDocumentation",
                    "src": "2298:111:23",
                    "text": " @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."
                  },
                  "id": 6450,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryMul",
                  "nameLocation": "2423:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6423,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "2438:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6450,
                        "src": "2430:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2430:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6425,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "2449:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6450,
                        "src": "2441:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6424,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2441:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2429:22:23"
                  },
                  "returnParameters": {
                    "id": 6431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6428,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "2480:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6450,
                        "src": "2475:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6427,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2475:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6430,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "2497:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6450,
                        "src": "2489:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6429,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2489:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2474:30:23"
                  },
                  "scope": 7931,
                  "src": "2414:482:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6470,
                    "nodeType": "Block",
                    "src": "3111:231:23",
                    "statements": [
                      {
                        "id": 6469,
                        "nodeType": "UncheckedBlock",
                        "src": "3121:215:23",
                        "statements": [
                          {
                            "expression": {
                              "id": 6466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6462,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6458,
                                "src": "3145:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6463,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6455,
                                  "src": "3155:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3159:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3155:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3145:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6467,
                            "nodeType": "ExpressionStatement",
                            "src": "3145:15:23"
                          },
                          {
                            "AST": {
                              "nativeSrc": "3199:127:23",
                              "nodeType": "YulBlock",
                              "src": "3199:127:23",
                              "statements": [
                                {
                                  "nativeSrc": "3293:19:23",
                                  "nodeType": "YulAssignment",
                                  "src": "3293:19:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "a",
                                        "nativeSrc": "3307:1:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "3307:1:23"
                                      },
                                      {
                                        "name": "b",
                                        "nativeSrc": "3310:1:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "3310:1:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nativeSrc": "3303:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "3303:3:23"
                                    },
                                    "nativeSrc": "3303:9:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3303:9:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "result",
                                      "nativeSrc": "3293:6:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "3293:6:23"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "cancun",
                            "externalReferences": [
                              {
                                "declaration": 6453,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3307:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6455,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3310:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6460,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3293:6:23",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 6468,
                            "nodeType": "InlineAssembly",
                            "src": "3174:152:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6451,
                    "nodeType": "StructuredDocumentation",
                    "src": "2902:113:23",
                    "text": " @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."
                  },
                  "id": 6471,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryDiv",
                  "nameLocation": "3029:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6456,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6453,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "3044:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6471,
                        "src": "3036:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6452,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3036:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6455,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "3055:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6471,
                        "src": "3047:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6454,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3047:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3035:22:23"
                  },
                  "returnParameters": {
                    "id": 6461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6458,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "3086:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6471,
                        "src": "3081:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6457,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3081:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6460,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "3103:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6471,
                        "src": "3095:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3095:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3080:30:23"
                  },
                  "scope": 7931,
                  "src": "3020:322:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6491,
                    "nodeType": "Block",
                    "src": "3567:231:23",
                    "statements": [
                      {
                        "id": 6490,
                        "nodeType": "UncheckedBlock",
                        "src": "3577:215:23",
                        "statements": [
                          {
                            "expression": {
                              "id": 6487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6483,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6479,
                                "src": "3601:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6484,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6476,
                                  "src": "3611:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 6485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3615:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3611:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3601:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6488,
                            "nodeType": "ExpressionStatement",
                            "src": "3601:15:23"
                          },
                          {
                            "AST": {
                              "nativeSrc": "3655:127:23",
                              "nodeType": "YulBlock",
                              "src": "3655:127:23",
                              "statements": [
                                {
                                  "nativeSrc": "3749:19:23",
                                  "nodeType": "YulAssignment",
                                  "src": "3749:19:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "a",
                                        "nativeSrc": "3763:1:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "3763:1:23"
                                      },
                                      {
                                        "name": "b",
                                        "nativeSrc": "3766:1:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "3766:1:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mod",
                                      "nativeSrc": "3759:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "3759:3:23"
                                    },
                                    "nativeSrc": "3759:9:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "3759:9:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "result",
                                      "nativeSrc": "3749:6:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "3749:6:23"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "cancun",
                            "externalReferences": [
                              {
                                "declaration": 6474,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3763:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6476,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3766:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6481,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3749:6:23",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 6489,
                            "nodeType": "InlineAssembly",
                            "src": "3630:152:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6472,
                    "nodeType": "StructuredDocumentation",
                    "src": "3348:123:23",
                    "text": " @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."
                  },
                  "id": 6492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryMod",
                  "nameLocation": "3485:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6474,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "3500:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6492,
                        "src": "3492:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6473,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3492:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6476,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "3511:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6492,
                        "src": "3503:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6475,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3503:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3491:22:23"
                  },
                  "returnParameters": {
                    "id": 6482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6479,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "3542:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6492,
                        "src": "3537:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6478,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3537:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6481,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "3559:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6492,
                        "src": "3551:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6480,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3551:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3536:30:23"
                  },
                  "scope": 7931,
                  "src": "3476:322:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6521,
                    "nodeType": "Block",
                    "src": "3989:122:23",
                    "statements": [
                      {
                        "assignments": [
                          6503,
                          6505
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6503,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "4005:7:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 6521,
                            "src": "4000:12:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6502,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4000:4:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6505,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "4022:6:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 6521,
                            "src": "4014:14:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6504,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4014:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6510,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6507,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6495,
                              "src": "4039:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6508,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6497,
                              "src": "4042:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6506,
                            "name": "tryAdd",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6385,
                            "src": "4032:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 6509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4032:12:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3999:45:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6512,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6503,
                              "src": "4069:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 6513,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6505,
                              "src": "4078:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4091:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 6515,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4091:7:23",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 6514,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "4086:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 6517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4086:13:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 6518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4100:3:23",
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "4086:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6511,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6599,
                            "src": "4061:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4061:43:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6501,
                        "id": 6520,
                        "nodeType": "Return",
                        "src": "4054:50:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6493,
                    "nodeType": "StructuredDocumentation",
                    "src": "3804:103:23",
                    "text": " @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."
                  },
                  "id": 6522,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "saturatingAdd",
                  "nameLocation": "3921:13:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6498,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6495,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "3943:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6522,
                        "src": "3935:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6494,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3935:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6497,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "3954:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6522,
                        "src": "3946:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6496,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3946:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3934:22:23"
                  },
                  "returnParameters": {
                    "id": 6501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6500,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6522,
                        "src": "3980:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6499,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3980:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3979:9:23"
                  },
                  "scope": 7931,
                  "src": "3912:199:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6541,
                    "nodeType": "Block",
                    "src": "4294:73:23",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          6533
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 6533,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "4315:6:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 6541,
                            "src": "4307:14:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6532,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4307:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6538,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6535,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6525,
                              "src": "4332:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6536,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6527,
                              "src": "4335:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6534,
                            "name": "trySub",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6420,
                            "src": "4325:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 6537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4325:12:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4304:33:23"
                      },
                      {
                        "expression": {
                          "id": 6539,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6533,
                          "src": "4354:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6531,
                        "id": 6540,
                        "nodeType": "Return",
                        "src": "4347:13:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6523,
                    "nodeType": "StructuredDocumentation",
                    "src": "4117:95:23",
                    "text": " @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."
                  },
                  "id": 6542,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "saturatingSub",
                  "nameLocation": "4226:13:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6528,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6525,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "4248:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6542,
                        "src": "4240:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6524,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4240:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6527,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "4259:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6542,
                        "src": "4251:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6526,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4251:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4239:22:23"
                  },
                  "returnParameters": {
                    "id": 6531,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6530,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6542,
                        "src": "4285:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6529,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4285:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4284:9:23"
                  },
                  "scope": 7931,
                  "src": "4217:150:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6571,
                    "nodeType": "Block",
                    "src": "4564:122:23",
                    "statements": [
                      {
                        "assignments": [
                          6553,
                          6555
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6553,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "4580:7:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 6571,
                            "src": "4575:12:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6552,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4575:4:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6555,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "4597:6:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 6571,
                            "src": "4589:14:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6554,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4589:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6560,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6557,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6545,
                              "src": "4614:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6558,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6547,
                              "src": "4617:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6556,
                            "name": "tryMul",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6450,
                            "src": "4607:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (bool,uint256)"
                            }
                          },
                          "id": 6559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4607:12:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4574:45:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6562,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6553,
                              "src": "4644:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 6563,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6555,
                              "src": "4653:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6566,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4666:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 6565,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4666:7:23",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    }
                                  ],
                                  "id": 6564,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "4661:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 6567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4661:13:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_uint256",
                                  "typeString": "type(uint256)"
                                }
                              },
                              "id": 6568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "4675:3:23",
                              "memberName": "max",
                              "nodeType": "MemberAccess",
                              "src": "4661:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6561,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6599,
                            "src": "4636:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4636:43:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6551,
                        "id": 6570,
                        "nodeType": "Return",
                        "src": "4629:50:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6543,
                    "nodeType": "StructuredDocumentation",
                    "src": "4373:109:23",
                    "text": " @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."
                  },
                  "id": 6572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "saturatingMul",
                  "nameLocation": "4496:13:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6545,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "4518:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6572,
                        "src": "4510:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6544,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4510:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6547,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "4529:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6572,
                        "src": "4521:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6546,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4521:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4509:22:23"
                  },
                  "returnParameters": {
                    "id": 6551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6550,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6572,
                        "src": "4555:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6549,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4555:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4554:9:23"
                  },
                  "scope": 7931,
                  "src": "4487:199:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6598,
                    "nodeType": "Block",
                    "src": "5158:207:23",
                    "statements": [
                      {
                        "id": 6597,
                        "nodeType": "UncheckedBlock",
                        "src": "5168:191:23",
                        "statements": [
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6584,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6579,
                                "src": "5306:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "^",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6587,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6585,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6577,
                                            "src": "5312:1:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "^",
                                          "rightExpression": {
                                            "id": 6586,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6579,
                                            "src": "5316:1:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5312:5:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 6588,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "5311:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "id": 6591,
                                          "name": "condition",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6575,
                                          "src": "5337:9:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "id": 6589,
                                          "name": "SafeCast",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9696,
                                          "src": "5321:8:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                            "typeString": "type(library SafeCast)"
                                          }
                                        },
                                        "id": 6590,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "5330:6:23",
                                        "memberName": "toUint",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 9695,
                                        "src": "5321:15:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                          "typeString": "function (bool) pure returns (uint256)"
                                        }
                                      },
                                      "id": 6592,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5321:26:23",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5311:36:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 6594,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5310:38:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5306:42:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 6583,
                            "id": 6596,
                            "nodeType": "Return",
                            "src": "5299:49:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6573,
                    "nodeType": "StructuredDocumentation",
                    "src": "4692:374:23",
                    "text": " @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."
                  },
                  "id": 6599,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ternary",
                  "nameLocation": "5080:7:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6575,
                        "mutability": "mutable",
                        "name": "condition",
                        "nameLocation": "5093:9:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6599,
                        "src": "5088:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6574,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5088:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6577,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5112:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6599,
                        "src": "5104:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5104:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6579,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5123:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6599,
                        "src": "5115:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6578,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5115:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5087:38:23"
                  },
                  "returnParameters": {
                    "id": 6583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6582,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6599,
                        "src": "5149:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6581,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5149:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5148:9:23"
                  },
                  "scope": 7931,
                  "src": "5071:294:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6617,
                    "nodeType": "Block",
                    "src": "5502:44:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6610,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6602,
                                "src": "5527:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 6611,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6604,
                                "src": "5531:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5527:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 6613,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6602,
                              "src": "5534:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6614,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6604,
                              "src": "5537:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6609,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6599,
                            "src": "5519:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5519:20:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6608,
                        "id": 6616,
                        "nodeType": "Return",
                        "src": "5512:27:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6600,
                    "nodeType": "StructuredDocumentation",
                    "src": "5371:59:23",
                    "text": " @dev Returns the largest of two numbers."
                  },
                  "id": 6618,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "max",
                  "nameLocation": "5444:3:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6602,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5456:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6618,
                        "src": "5448:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5448:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6604,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5467:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6618,
                        "src": "5459:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5459:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5447:22:23"
                  },
                  "returnParameters": {
                    "id": 6608,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6607,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6618,
                        "src": "5493:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6606,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5493:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5492:9:23"
                  },
                  "scope": 7931,
                  "src": "5435:111:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6636,
                    "nodeType": "Block",
                    "src": "5684:44:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6631,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6629,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6621,
                                "src": "5709:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 6630,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6623,
                                "src": "5713:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5709:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 6632,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6621,
                              "src": "5716:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6633,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6623,
                              "src": "5719:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6628,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6599,
                            "src": "5701:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5701:20:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6627,
                        "id": 6635,
                        "nodeType": "Return",
                        "src": "5694:27:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6619,
                    "nodeType": "StructuredDocumentation",
                    "src": "5552:60:23",
                    "text": " @dev Returns the smallest of two numbers."
                  },
                  "id": 6637,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "min",
                  "nameLocation": "5626:3:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6624,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6621,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5638:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6637,
                        "src": "5630:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6620,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5630:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6623,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5649:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6637,
                        "src": "5641:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6622,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5641:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5629:22:23"
                  },
                  "returnParameters": {
                    "id": 6627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6626,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6637,
                        "src": "5675:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6625,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5675:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5674:9:23"
                  },
                  "scope": 7931,
                  "src": "5617:111:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6659,
                    "nodeType": "Block",
                    "src": "5912:82:23",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6647,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6640,
                                  "src": "5967:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "id": 6648,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6642,
                                  "src": "5971:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5967:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6650,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5966:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6653,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6651,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6640,
                                    "src": "5977:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "^",
                                  "rightExpression": {
                                    "id": 6652,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6642,
                                    "src": "5981:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5977:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 6654,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5976:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 6655,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5986:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "5976:11:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5966:21:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6646,
                        "id": 6658,
                        "nodeType": "Return",
                        "src": "5959:28:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6638,
                    "nodeType": "StructuredDocumentation",
                    "src": "5734:102:23",
                    "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero."
                  },
                  "id": 6660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "average",
                  "nameLocation": "5850:7:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6640,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5866:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6660,
                        "src": "5858:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5858:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6642,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5877:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6660,
                        "src": "5869:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6641,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5869:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5857:22:23"
                  },
                  "returnParameters": {
                    "id": 6646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6645,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6660,
                        "src": "5903:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6644,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5903:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5902:9:23"
                  },
                  "scope": 7931,
                  "src": "5841:153:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6700,
                    "nodeType": "Block",
                    "src": "6286:633:23",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6670,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6665,
                            "src": "6300:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6305:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6300:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6681,
                        "nodeType": "IfStatement",
                        "src": "6296:150:23",
                        "trueBody": {
                          "id": 6680,
                          "nodeType": "Block",
                          "src": "6308:138:23",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 6676,
                                      "name": "Panic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3602,
                                      "src": "6412:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                        "typeString": "type(library Panic)"
                                      }
                                    },
                                    "id": 6677,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "6418:16:23",
                                    "memberName": "DIVISION_BY_ZERO",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3569,
                                    "src": "6412:22:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6673,
                                    "name": "Panic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3602,
                                    "src": "6400:5:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                      "typeString": "type(library Panic)"
                                    }
                                  },
                                  "id": 6675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6406:5:23",
                                  "memberName": "panic",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3601,
                                  "src": "6400:11:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) pure"
                                  }
                                },
                                "id": 6678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6400:35:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6679,
                              "nodeType": "ExpressionStatement",
                              "src": "6400:35:23"
                            }
                          ]
                        }
                      },
                      {
                        "id": 6699,
                        "nodeType": "UncheckedBlock",
                        "src": "6829:84:23",
                        "statements": [
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6686,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6684,
                                      "name": "a",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6663,
                                      "src": "6876:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 6685,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6880:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "6876:5:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 6682,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9696,
                                    "src": "6860:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 6683,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "6869:6:23",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9695,
                                  "src": "6860:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 6687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6860:22:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6695,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6693,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6690,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 6688,
                                              "name": "a",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6663,
                                              "src": "6887:1:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "hexValue": "31",
                                              "id": 6689,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "6891:1:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "6887:5:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 6691,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "6886:7:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 6692,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6665,
                                        "src": "6896:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6886:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 6694,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6900:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "6886:15:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 6696,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6885:17:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6860:42:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 6669,
                            "id": 6698,
                            "nodeType": "Return",
                            "src": "6853:49:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6661,
                    "nodeType": "StructuredDocumentation",
                    "src": "6000:210:23",
                    "text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."
                  },
                  "id": 6701,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ceilDiv",
                  "nameLocation": "6224:7:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6663,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "6240:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6701,
                        "src": "6232:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6662,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6232:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6665,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "6251:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6701,
                        "src": "6243:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6243:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6231:22:23"
                  },
                  "returnParameters": {
                    "id": 6669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6668,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6701,
                        "src": "6277:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6277:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6276:9:23"
                  },
                  "scope": 7931,
                  "src": "6215:704:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6836,
                    "nodeType": "Block",
                    "src": "7340:3585:23",
                    "statements": [
                      {
                        "id": 6835,
                        "nodeType": "UncheckedBlock",
                        "src": "7350:3569:23",
                        "statements": [
                          {
                            "assignments": [
                              6714,
                              6716
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6714,
                                "mutability": "mutable",
                                "name": "high",
                                "nameLocation": "7383:4:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6835,
                                "src": "7375:12:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6713,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7375:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 6716,
                                "mutability": "mutable",
                                "name": "low",
                                "nameLocation": "7397:3:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6835,
                                "src": "7389:11:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6715,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7389:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6721,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 6718,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6704,
                                  "src": "7411:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 6719,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6706,
                                  "src": "7414:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6717,
                                "name": "mul512",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6350,
                                "src": "7404:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                                }
                              },
                              "id": 6720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7404:12:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7374:42:23"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6722,
                                "name": "high",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6714,
                                "src": "7498:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7506:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7498:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6730,
                            "nodeType": "IfStatement",
                            "src": "7494:365:23",
                            "trueBody": {
                              "id": 6729,
                              "nodeType": "Block",
                              "src": "7509:350:23",
                              "statements": [
                                {
                                  "expression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6725,
                                      "name": "low",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6716,
                                      "src": "7827:3:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 6726,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6708,
                                      "src": "7833:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7827:17:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "functionReturnParameters": 6712,
                                  "id": 6728,
                                  "nodeType": "Return",
                                  "src": "7820:24:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6733,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6731,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6708,
                                "src": "7969:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 6732,
                                "name": "high",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6714,
                                "src": "7984:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7969:19:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6749,
                            "nodeType": "IfStatement",
                            "src": "7965:142:23",
                            "trueBody": {
                              "id": 6748,
                              "nodeType": "Block",
                              "src": "7990:117:23",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6740,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 6738,
                                              "name": "denominator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6708,
                                              "src": "8028:11:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30",
                                              "id": 6739,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8043:1:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "8028:16:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 6741,
                                              "name": "Panic",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3602,
                                              "src": "8046:5:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                                "typeString": "type(library Panic)"
                                              }
                                            },
                                            "id": 6742,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "8052:16:23",
                                            "memberName": "DIVISION_BY_ZERO",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3569,
                                            "src": "8046:22:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 6743,
                                              "name": "Panic",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3602,
                                              "src": "8070:5:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                                "typeString": "type(library Panic)"
                                              }
                                            },
                                            "id": 6744,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberLocation": "8076:14:23",
                                            "memberName": "UNDER_OVERFLOW",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3565,
                                            "src": "8070:20:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 6737,
                                          "name": "ternary",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6599,
                                          "src": "8020:7:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 6745,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8020:71:23",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 6734,
                                        "name": "Panic",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3602,
                                        "src": "8008:5:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                          "typeString": "type(library Panic)"
                                        }
                                      },
                                      "id": 6736,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "8014:5:23",
                                      "memberName": "panic",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3601,
                                      "src": "8008:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256) pure"
                                      }
                                    },
                                    "id": 6746,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8008:84:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6747,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8008:84:23"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              6751
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6751,
                                "mutability": "mutable",
                                "name": "remainder",
                                "nameLocation": "8367:9:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6835,
                                "src": "8359:17:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6750,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8359:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6752,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8359:17:23"
                          },
                          {
                            "AST": {
                              "nativeSrc": "8415:283:23",
                              "nodeType": "YulBlock",
                              "src": "8415:283:23",
                              "statements": [
                                {
                                  "nativeSrc": "8484:38:23",
                                  "nodeType": "YulAssignment",
                                  "src": "8484:38:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nativeSrc": "8504:1:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "8504:1:23"
                                      },
                                      {
                                        "name": "y",
                                        "nativeSrc": "8507:1:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "8507:1:23"
                                      },
                                      {
                                        "name": "denominator",
                                        "nativeSrc": "8510:11:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "8510:11:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mulmod",
                                      "nativeSrc": "8497:6:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "8497:6:23"
                                    },
                                    "nativeSrc": "8497:25:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "8497:25:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "remainder",
                                      "nativeSrc": "8484:9:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "8484:9:23"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "8604:37:23",
                                  "nodeType": "YulAssignment",
                                  "src": "8604:37:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "high",
                                        "nativeSrc": "8616:4:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "8616:4:23"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "remainder",
                                            "nativeSrc": "8625:9:23",
                                            "nodeType": "YulIdentifier",
                                            "src": "8625:9:23"
                                          },
                                          {
                                            "name": "low",
                                            "nativeSrc": "8636:3:23",
                                            "nodeType": "YulIdentifier",
                                            "src": "8636:3:23"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "gt",
                                          "nativeSrc": "8622:2:23",
                                          "nodeType": "YulIdentifier",
                                          "src": "8622:2:23"
                                        },
                                        "nativeSrc": "8622:18:23",
                                        "nodeType": "YulFunctionCall",
                                        "src": "8622:18:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "8612:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "8612:3:23"
                                    },
                                    "nativeSrc": "8612:29:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "8612:29:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "high",
                                      "nativeSrc": "8604:4:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "8604:4:23"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "8658:26:23",
                                  "nodeType": "YulAssignment",
                                  "src": "8658:26:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "low",
                                        "nativeSrc": "8669:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "8669:3:23"
                                      },
                                      {
                                        "name": "remainder",
                                        "nativeSrc": "8674:9:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "8674:9:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nativeSrc": "8665:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "8665:3:23"
                                    },
                                    "nativeSrc": "8665:19:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "8665:19:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "low",
                                      "nativeSrc": "8658:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "8658:3:23"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "cancun",
                            "externalReferences": [
                              {
                                "declaration": 6708,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8510:11:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6714,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8604:4:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6714,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8616:4:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6716,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8636:3:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6716,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8658:3:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6716,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8669:3:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6751,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8484:9:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6751,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8625:9:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6751,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8674:9:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6704,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8504:1:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6706,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8507:1:23",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 6753,
                            "nodeType": "InlineAssembly",
                            "src": "8390:308:23"
                          },
                          {
                            "assignments": [
                              6755
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6755,
                                "mutability": "mutable",
                                "name": "twos",
                                "nameLocation": "8910:4:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6835,
                                "src": "8902:12:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6754,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8902:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6762,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6756,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6708,
                                "src": "8917:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "30",
                                      "id": 6757,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8932:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 6758,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6708,
                                      "src": "8936:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8932:15:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 6760,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8931:17:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8917:31:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8902:46:23"
                          },
                          {
                            "AST": {
                              "nativeSrc": "8987:359:23",
                              "nodeType": "YulBlock",
                              "src": "8987:359:23",
                              "statements": [
                                {
                                  "nativeSrc": "9052:37:23",
                                  "nodeType": "YulAssignment",
                                  "src": "9052:37:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "denominator",
                                        "nativeSrc": "9071:11:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "9071:11:23"
                                      },
                                      {
                                        "name": "twos",
                                        "nativeSrc": "9084:4:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "9084:4:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nativeSrc": "9067:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "9067:3:23"
                                    },
                                    "nativeSrc": "9067:22:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9067:22:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "denominator",
                                      "nativeSrc": "9052:11:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "9052:11:23"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "9153:21:23",
                                  "nodeType": "YulAssignment",
                                  "src": "9153:21:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "low",
                                        "nativeSrc": "9164:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "9164:3:23"
                                      },
                                      {
                                        "name": "twos",
                                        "nativeSrc": "9169:4:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "9169:4:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nativeSrc": "9160:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "9160:3:23"
                                    },
                                    "nativeSrc": "9160:14:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9160:14:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "low",
                                      "nativeSrc": "9153:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "9153:3:23"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "9293:39:23",
                                  "nodeType": "YulAssignment",
                                  "src": "9293:39:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nativeSrc": "9313:1:23",
                                                "nodeType": "YulLiteral",
                                                "src": "9313:1:23",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "name": "twos",
                                                "nativeSrc": "9316:4:23",
                                                "nodeType": "YulIdentifier",
                                                "src": "9316:4:23"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nativeSrc": "9309:3:23",
                                              "nodeType": "YulIdentifier",
                                              "src": "9309:3:23"
                                            },
                                            "nativeSrc": "9309:12:23",
                                            "nodeType": "YulFunctionCall",
                                            "src": "9309:12:23"
                                          },
                                          {
                                            "name": "twos",
                                            "nativeSrc": "9323:4:23",
                                            "nodeType": "YulIdentifier",
                                            "src": "9323:4:23"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nativeSrc": "9305:3:23",
                                          "nodeType": "YulIdentifier",
                                          "src": "9305:3:23"
                                        },
                                        "nativeSrc": "9305:23:23",
                                        "nodeType": "YulFunctionCall",
                                        "src": "9305:23:23"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "9330:1:23",
                                        "nodeType": "YulLiteral",
                                        "src": "9330:1:23",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "9301:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "9301:3:23"
                                    },
                                    "nativeSrc": "9301:31:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "9301:31:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "twos",
                                      "nativeSrc": "9293:4:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "9293:4:23"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "cancun",
                            "externalReferences": [
                              {
                                "declaration": 6708,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9052:11:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6708,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9071:11:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6716,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9153:3:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6716,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9164:3:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6755,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9084:4:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6755,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9169:4:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6755,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9293:4:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6755,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9316:4:23",
                                "valueSize": 1
                              },
                              {
                                "declaration": 6755,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "9323:4:23",
                                "valueSize": 1
                              }
                            ],
                            "flags": [
                              "memory-safe"
                            ],
                            "id": 6763,
                            "nodeType": "InlineAssembly",
                            "src": "8962:384:23"
                          },
                          {
                            "expression": {
                              "id": 6768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6764,
                                "name": "low",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6716,
                                "src": "9409:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "|=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6765,
                                  "name": "high",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6714,
                                  "src": "9416:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 6766,
                                  "name": "twos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6755,
                                  "src": "9423:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9416:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9409:18:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6769,
                            "nodeType": "ExpressionStatement",
                            "src": "9409:18:23"
                          },
                          {
                            "assignments": [
                              6771
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6771,
                                "mutability": "mutable",
                                "name": "inverse",
                                "nameLocation": "9770:7:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6835,
                                "src": "9762:15:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6770,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9762:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6778,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6774,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "33",
                                      "id": 6772,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9781:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 6773,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6708,
                                      "src": "9785:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9781:15:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 6775,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "9780:17:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "^",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 6776,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9800:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "9780:21:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9762:39:23"
                          },
                          {
                            "expression": {
                              "id": 6785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6779,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6771,
                                "src": "10018:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6784,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 6780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10029:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6783,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6781,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6708,
                                    "src": "10033:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 6782,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6771,
                                    "src": "10047:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10033:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10029:25:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10018:36:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6786,
                            "nodeType": "ExpressionStatement",
                            "src": "10018:36:23"
                          },
                          {
                            "expression": {
                              "id": 6793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6787,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6771,
                                "src": "10088:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 6788,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10099:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6791,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6789,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6708,
                                    "src": "10103:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 6790,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6771,
                                    "src": "10117:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10103:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10099:25:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10088:36:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6794,
                            "nodeType": "ExpressionStatement",
                            "src": "10088:36:23"
                          },
                          {
                            "expression": {
                              "id": 6801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6795,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6771,
                                "src": "10160:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6800,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 6796,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10171:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6799,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6797,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6708,
                                    "src": "10175:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 6798,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6771,
                                    "src": "10189:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10175:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10171:25:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10160:36:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6802,
                            "nodeType": "ExpressionStatement",
                            "src": "10160:36:23"
                          },
                          {
                            "expression": {
                              "id": 6809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6803,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6771,
                                "src": "10231:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 6804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10242:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6807,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6805,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6708,
                                    "src": "10246:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 6806,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6771,
                                    "src": "10260:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10246:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10242:25:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10231:36:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6810,
                            "nodeType": "ExpressionStatement",
                            "src": "10231:36:23"
                          },
                          {
                            "expression": {
                              "id": 6817,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6811,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6771,
                                "src": "10304:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 6812,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10315:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6815,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6813,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6708,
                                    "src": "10319:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 6814,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6771,
                                    "src": "10333:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10319:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10315:25:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10304:36:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6818,
                            "nodeType": "ExpressionStatement",
                            "src": "10304:36:23"
                          },
                          {
                            "expression": {
                              "id": 6825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6819,
                                "name": "inverse",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6771,
                                "src": "10378:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 6820,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10389:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6821,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6708,
                                    "src": "10393:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 6822,
                                    "name": "inverse",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6771,
                                    "src": "10407:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10393:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10389:25:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10378:36:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6826,
                            "nodeType": "ExpressionStatement",
                            "src": "10378:36:23"
                          },
                          {
                            "expression": {
                              "id": 6831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6827,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6711,
                                "src": "10859:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6828,
                                  "name": "low",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6716,
                                  "src": "10868:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 6829,
                                  "name": "inverse",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6771,
                                  "src": "10874:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10868:13:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10859:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6832,
                            "nodeType": "ExpressionStatement",
                            "src": "10859:22:23"
                          },
                          {
                            "expression": {
                              "id": 6833,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6711,
                              "src": "10902:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 6712,
                            "id": 6834,
                            "nodeType": "Return",
                            "src": "10895:13:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6702,
                    "nodeType": "StructuredDocumentation",
                    "src": "6925:312:23",
                    "text": " @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."
                  },
                  "id": 6837,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulDiv",
                  "nameLocation": "7251:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6704,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "7266:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6837,
                        "src": "7258:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6703,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7258:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6706,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "7277:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6837,
                        "src": "7269:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6705,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7269:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6708,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "7288:11:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6837,
                        "src": "7280:19:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6707,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7280:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7257:43:23"
                  },
                  "returnParameters": {
                    "id": 6712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6711,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "7332:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6837,
                        "src": "7324:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6710,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7324:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7323:16:23"
                  },
                  "scope": 7931,
                  "src": "7242:3683:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6873,
                    "nodeType": "Block",
                    "src": "11164:128:23",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 6853,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6840,
                                "src": "11188:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6854,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6842,
                                "src": "11191:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6855,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6844,
                                "src": "11194:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6852,
                              "name": "mulDiv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                6837,
                                6874
                              ],
                              "referencedDeclaration": 6837,
                              "src": "11181:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11181:25:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 6869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 6860,
                                      "name": "rounding",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6847,
                                      "src": "11242:8:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Rounding_$6322",
                                        "typeString": "enum Math.Rounding"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_Rounding_$6322",
                                        "typeString": "enum Math.Rounding"
                                      }
                                    ],
                                    "id": 6859,
                                    "name": "unsignedRoundsUp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7930,
                                    "src": "11225:16:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6322_$returns$_t_bool_$",
                                      "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                    }
                                  },
                                  "id": 6861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11225:26:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 6863,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6840,
                                        "src": "11262:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6864,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6842,
                                        "src": "11265:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6865,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6844,
                                        "src": "11268:11:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 6862,
                                      "name": "mulmod",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -16,
                                      "src": "11255:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11255:25:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 6867,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11283:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "11255:29:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "11225:59:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 6857,
                                "name": "SafeCast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9696,
                                "src": "11209:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                  "typeString": "type(library SafeCast)"
                                }
                              },
                              "id": 6858,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "11218:6:23",
                              "memberName": "toUint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9695,
                              "src": "11209:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (bool) pure returns (uint256)"
                              }
                            },
                            "id": 6870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11209:76:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11181:104:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6851,
                        "id": 6872,
                        "nodeType": "Return",
                        "src": "11174:111:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6838,
                    "nodeType": "StructuredDocumentation",
                    "src": "10931:118:23",
                    "text": " @dev Calculates x * y / denominator with full precision, following the selected rounding direction."
                  },
                  "id": 6874,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulDiv",
                  "nameLocation": "11063:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6848,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6840,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "11078:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6874,
                        "src": "11070:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6839,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11070:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6842,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "11089:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6874,
                        "src": "11081:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11081:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6844,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "11100:11:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6874,
                        "src": "11092:19:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6843,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11092:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6847,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "11122:8:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6874,
                        "src": "11113:17:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$6322",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 6846,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6845,
                            "name": "Rounding",
                            "nameLocations": [
                              "11113:8:23"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6322,
                            "src": "11113:8:23"
                          },
                          "referencedDeclaration": 6322,
                          "src": "11113:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$6322",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11069:62:23"
                  },
                  "returnParameters": {
                    "id": 6851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6850,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6874,
                        "src": "11155:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6849,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11155:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11154:9:23"
                  },
                  "scope": 7931,
                  "src": "11054:238:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6923,
                    "nodeType": "Block",
                    "src": "11500:245:23",
                    "statements": [
                      {
                        "id": 6922,
                        "nodeType": "UncheckedBlock",
                        "src": "11510:229:23",
                        "statements": [
                          {
                            "assignments": [
                              6887,
                              6889
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6887,
                                "mutability": "mutable",
                                "name": "high",
                                "nameLocation": "11543:4:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6922,
                                "src": "11535:12:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6886,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11535:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 6889,
                                "mutability": "mutable",
                                "name": "low",
                                "nameLocation": "11557:3:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 6922,
                                "src": "11549:11:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6888,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11549:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6894,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 6891,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6877,
                                  "src": "11571:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 6892,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6879,
                                  "src": "11574:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6890,
                                "name": "mul512",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6350,
                                "src": "11564:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256,uint256)"
                                }
                              },
                              "id": 6893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11564:12:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11534:42:23"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6899,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6895,
                                "name": "high",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6887,
                                "src": "11594:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "31",
                                  "id": 6896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11602:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "id": 6897,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6881,
                                  "src": "11607:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "src": "11602:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11594:14:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6908,
                            "nodeType": "IfStatement",
                            "src": "11590:86:23",
                            "trueBody": {
                              "id": 6907,
                              "nodeType": "Block",
                              "src": "11610:66:23",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 6903,
                                          "name": "Panic",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3602,
                                          "src": "11640:5:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                            "typeString": "type(library Panic)"
                                          }
                                        },
                                        "id": 6904,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberLocation": "11646:14:23",
                                        "memberName": "UNDER_OVERFLOW",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3565,
                                        "src": "11640:20:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 6900,
                                        "name": "Panic",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3602,
                                        "src": "11628:5:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                          "typeString": "type(library Panic)"
                                        }
                                      },
                                      "id": 6902,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "11634:5:23",
                                      "memberName": "panic",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3601,
                                      "src": "11628:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256) pure"
                                      }
                                    },
                                    "id": 6905,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11628:33:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6906,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11628:33:23"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6920,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6914,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6909,
                                      "name": "high",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6887,
                                      "src": "11697:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          "id": 6912,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "323536",
                                            "id": 6910,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11706:3:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_256_by_1",
                                              "typeString": "int_const 256"
                                            },
                                            "value": "256"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 6911,
                                            "name": "n",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6881,
                                            "src": "11712:1:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "11706:7:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        }
                                      ],
                                      "id": 6913,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "11705:9:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "src": "11697:17:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 6915,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11696:19:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "|",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6918,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6916,
                                      "name": "low",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6889,
                                      "src": "11719:3:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">>",
                                    "rightExpression": {
                                      "id": 6917,
                                      "name": "n",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6881,
                                      "src": "11726:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "11719:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 6919,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11718:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11696:32:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 6885,
                            "id": 6921,
                            "nodeType": "Return",
                            "src": "11689:39:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6875,
                    "nodeType": "StructuredDocumentation",
                    "src": "11298:111:23",
                    "text": " @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."
                  },
                  "id": 6924,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulShr",
                  "nameLocation": "11423:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6877,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "11438:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6924,
                        "src": "11430:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11430:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6879,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "11449:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6924,
                        "src": "11441:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11441:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6881,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "11458:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6924,
                        "src": "11452:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 6880,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "11452:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11429:31:23"
                  },
                  "returnParameters": {
                    "id": 6885,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6884,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "11492:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6924,
                        "src": "11484:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6883,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11484:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11483:16:23"
                  },
                  "scope": 7931,
                  "src": "11414:331:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6962,
                    "nodeType": "Block",
                    "src": "11963:113:23",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 6940,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6927,
                                "src": "11987:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6941,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6929,
                                "src": "11990:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6942,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6931,
                                "src": "11993:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "id": 6939,
                              "name": "mulShr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                6924,
                                6963
                              ],
                              "referencedDeclaration": 6924,
                              "src": "11980:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint8) pure returns (uint256)"
                              }
                            },
                            "id": 6943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11980:15:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 6958,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 6947,
                                      "name": "rounding",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6934,
                                      "src": "12031:8:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Rounding_$6322",
                                        "typeString": "enum Math.Rounding"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_enum$_Rounding_$6322",
                                        "typeString": "enum Math.Rounding"
                                      }
                                    ],
                                    "id": 6946,
                                    "name": "unsignedRoundsUp",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7930,
                                    "src": "12014:16:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6322_$returns$_t_bool_$",
                                      "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                    }
                                  },
                                  "id": 6948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12014:26:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6957,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 6950,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6927,
                                        "src": "12051:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6951,
                                        "name": "y",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6929,
                                        "src": "12054:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6954,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 6952,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12057:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "id": 6953,
                                          "name": "n",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6931,
                                          "src": "12062:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "12057:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 6949,
                                      "name": "mulmod",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -16,
                                      "src": "12044:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6955,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12044:20:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 6956,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12067:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "12044:24:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "12014:54:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 6944,
                                "name": "SafeCast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9696,
                                "src": "11998:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                  "typeString": "type(library SafeCast)"
                                }
                              },
                              "id": 6945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "12007:6:23",
                              "memberName": "toUint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9695,
                              "src": "11998:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (bool) pure returns (uint256)"
                              }
                            },
                            "id": 6959,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11998:71:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11980:89:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6938,
                        "id": 6961,
                        "nodeType": "Return",
                        "src": "11973:96:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6925,
                    "nodeType": "StructuredDocumentation",
                    "src": "11751:109:23",
                    "text": " @dev Calculates x * y >> n with full precision, following the selected rounding direction."
                  },
                  "id": 6963,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulShr",
                  "nameLocation": "11874:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6927,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "11889:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6963,
                        "src": "11881:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6926,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11881:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6929,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "11900:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6963,
                        "src": "11892:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11892:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6931,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "11909:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6963,
                        "src": "11903:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 6930,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "11903:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6934,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "11921:8:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 6963,
                        "src": "11912:17:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$6322",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 6933,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6932,
                            "name": "Rounding",
                            "nameLocations": [
                              "11912:8:23"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6322,
                            "src": "11912:8:23"
                          },
                          "referencedDeclaration": 6322,
                          "src": "11912:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$6322",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11880:50:23"
                  },
                  "returnParameters": {
                    "id": 6938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6937,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6963,
                        "src": "11954:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6936,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11954:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11953:9:23"
                  },
                  "scope": 7931,
                  "src": "11865:211:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7059,
                    "nodeType": "Block",
                    "src": "12710:1849:23",
                    "statements": [
                      {
                        "id": 7058,
                        "nodeType": "UncheckedBlock",
                        "src": "12720:1833:23",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6973,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6968,
                                "src": "12748:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6974,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12753:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12748:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6978,
                            "nodeType": "IfStatement",
                            "src": "12744:20:23",
                            "trueBody": {
                              "expression": {
                                "hexValue": "30",
                                "id": 6976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12763:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 6972,
                              "id": 6977,
                              "nodeType": "Return",
                              "src": "12756:8:23"
                            }
                          },
                          {
                            "assignments": [
                              6980
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6980,
                                "mutability": "mutable",
                                "name": "remainder",
                                "nameLocation": "13243:9:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7058,
                                "src": "13235:17:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6979,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13235:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6984,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6981,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6966,
                                "src": "13255:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "id": 6982,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6968,
                                "src": "13259:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13255:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13235:25:23"
                          },
                          {
                            "assignments": [
                              6986
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6986,
                                "mutability": "mutable",
                                "name": "gcd",
                                "nameLocation": "13282:3:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7058,
                                "src": "13274:11:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6985,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13274:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6988,
                            "initialValue": {
                              "id": 6987,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6968,
                              "src": "13288:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13274:15:23"
                          },
                          {
                            "assignments": [
                              6990
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6990,
                                "mutability": "mutable",
                                "name": "x",
                                "nameLocation": "13432:1:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7058,
                                "src": "13425:8:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 6989,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13425:6:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6992,
                            "initialValue": {
                              "hexValue": "30",
                              "id": 6991,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13436:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13425:12:23"
                          },
                          {
                            "assignments": [
                              6994
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6994,
                                "mutability": "mutable",
                                "name": "y",
                                "nameLocation": "13458:1:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7058,
                                "src": "13451:8:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 6993,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13451:6:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6996,
                            "initialValue": {
                              "hexValue": "31",
                              "id": 6995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13462:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13451:12:23"
                          },
                          {
                            "body": {
                              "id": 7033,
                              "nodeType": "Block",
                              "src": "13501:882:23",
                              "statements": [
                                {
                                  "assignments": [
                                    7001
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7001,
                                      "mutability": "mutable",
                                      "name": "quotient",
                                      "nameLocation": "13527:8:23",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 7033,
                                      "src": "13519:16:23",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 7000,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13519:7:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7005,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7004,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7002,
                                      "name": "gcd",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6986,
                                      "src": "13538:3:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 7003,
                                      "name": "remainder",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6980,
                                      "src": "13544:9:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13538:15:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13519:34:23"
                                },
                                {
                                  "expression": {
                                    "id": 7016,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 7006,
                                          "name": "gcd",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6986,
                                          "src": "13573:3:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 7007,
                                          "name": "remainder",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6980,
                                          "src": "13578:9:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 7008,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "13572:16:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "id": 7009,
                                          "name": "remainder",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6980,
                                          "src": "13678:9:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7014,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7010,
                                            "name": "gcd",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6986,
                                            "src": "13923:3:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7013,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7011,
                                              "name": "remainder",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6980,
                                              "src": "13929:9:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 7012,
                                              "name": "quotient",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7001,
                                              "src": "13941:8:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "13929:20:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13923:26:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 7015,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13591:376:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "13572:395:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 7017,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13572:395:23"
                                },
                                {
                                  "expression": {
                                    "id": 7031,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 7018,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6990,
                                          "src": "13987:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        {
                                          "id": 7019,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6994,
                                          "src": "13990:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "id": 7020,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "13986:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$",
                                        "typeString": "tuple(int256,int256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "id": 7021,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6994,
                                          "src": "14072:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          },
                                          "id": 7029,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7022,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6990,
                                            "src": "14326:1:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            },
                                            "id": 7028,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7023,
                                              "name": "y",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6994,
                                              "src": "14330:1:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "id": 7026,
                                                  "name": "quotient",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7001,
                                                  "src": "14341:8:23",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "id": 7025,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "14334:6:23",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_int256_$",
                                                  "typeString": "type(int256)"
                                                },
                                                "typeName": {
                                                  "id": 7024,
                                                  "name": "int256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "14334:6:23",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 7027,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "14334:16:23",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            },
                                            "src": "14330:20:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "src": "14326:24:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "id": 7030,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13995:373:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$",
                                        "typeString": "tuple(int256,int256)"
                                      }
                                    },
                                    "src": "13986:382:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 7032,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13986:382:23"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6997,
                                "name": "remainder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6980,
                                "src": "13485:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13498:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13485:14:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7034,
                            "nodeType": "WhileStatement",
                            "src": "13478:905:23"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7035,
                                "name": "gcd",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6986,
                                "src": "14401:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 7036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14408:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "14401:8:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7040,
                            "nodeType": "IfStatement",
                            "src": "14397:22:23",
                            "trueBody": {
                              "expression": {
                                "hexValue": "30",
                                "id": 7038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14418:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 6972,
                              "id": 7039,
                              "nodeType": "Return",
                              "src": "14411:8:23"
                            }
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 7044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7042,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6990,
                                    "src": "14470:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 7043,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14474:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "14470:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7051,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7045,
                                    "name": "n",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6968,
                                    "src": "14477:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 7049,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "-",
                                        "prefix": true,
                                        "src": "14489:2:23",
                                        "subExpression": {
                                          "id": 7048,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6990,
                                          "src": "14490:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      ],
                                      "id": 7047,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14481:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 7046,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14481:7:23",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7050,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14481:11:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14477:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 7054,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6990,
                                      "src": "14502:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 7053,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14494:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 7052,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14494:7:23",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14494:10:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7041,
                                "name": "ternary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6599,
                                "src": "14462:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (bool,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14462:43:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 6972,
                            "id": 7057,
                            "nodeType": "Return",
                            "src": "14455:50:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6964,
                    "nodeType": "StructuredDocumentation",
                    "src": "12082:553:23",
                    "text": " @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."
                  },
                  "id": 7060,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invMod",
                  "nameLocation": "12649:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6966,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "12664:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7060,
                        "src": "12656:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6965,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12656:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6968,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "12675:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7060,
                        "src": "12667:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12667:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12655:22:23"
                  },
                  "returnParameters": {
                    "id": 6972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6971,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7060,
                        "src": "12701:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6970,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12701:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12700:9:23"
                  },
                  "scope": 7931,
                  "src": "12640:1919:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7080,
                    "nodeType": "Block",
                    "src": "15159:82:23",
                    "statements": [
                      {
                        "id": 7079,
                        "nodeType": "UncheckedBlock",
                        "src": "15169:66:23",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7072,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7063,
                                  "src": "15212:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7075,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7073,
                                    "name": "p",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7065,
                                    "src": "15215:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 7074,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15219:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "15215:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 7076,
                                  "name": "p",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7065,
                                  "src": "15222:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 7070,
                                  "name": "Math",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7931,
                                  "src": "15200:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Math_$7931_$",
                                    "typeString": "type(library Math)"
                                  }
                                },
                                "id": 7071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "15205:6:23",
                                "memberName": "modExp",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7117,
                                "src": "15200:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 7077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15200:24:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7069,
                            "id": 7078,
                            "nodeType": "Return",
                            "src": "15193:31:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7061,
                    "nodeType": "StructuredDocumentation",
                    "src": "14565:514:23",
                    "text": " @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."
                  },
                  "id": 7081,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "invModPrime",
                  "nameLocation": "15093:11:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7063,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "15113:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7081,
                        "src": "15105:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7062,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15105:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7065,
                        "mutability": "mutable",
                        "name": "p",
                        "nameLocation": "15124:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7081,
                        "src": "15116:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7064,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15116:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15104:22:23"
                  },
                  "returnParameters": {
                    "id": 7069,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7068,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7081,
                        "src": "15150:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7067,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15150:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15149:9:23"
                  },
                  "scope": 7931,
                  "src": "15084:157:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7116,
                    "nodeType": "Block",
                    "src": "16011:174:23",
                    "statements": [
                      {
                        "assignments": [
                          7094,
                          7096
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7094,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "16027:7:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 7116,
                            "src": "16022:12:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7093,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "16022:4:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7096,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "16044:6:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 7116,
                            "src": "16036:14:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7095,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16036:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7102,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7098,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7084,
                              "src": "16064:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7099,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7086,
                              "src": "16067:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7100,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7088,
                              "src": "16070:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7097,
                            "name": "tryModExp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7141,
                              7223
                            ],
                            "referencedDeclaration": 7141,
                            "src": "16054:9:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) view returns (bool,uint256)"
                            }
                          },
                          "id": 7101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16054:18:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16021:51:23"
                      },
                      {
                        "condition": {
                          "id": 7104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "16086:8:23",
                          "subExpression": {
                            "id": 7103,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7094,
                            "src": "16087:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7113,
                        "nodeType": "IfStatement",
                        "src": "16082:74:23",
                        "trueBody": {
                          "id": 7112,
                          "nodeType": "Block",
                          "src": "16096:60:23",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 7108,
                                      "name": "Panic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3602,
                                      "src": "16122:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                        "typeString": "type(library Panic)"
                                      }
                                    },
                                    "id": 7109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "16128:16:23",
                                    "memberName": "DIVISION_BY_ZERO",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3569,
                                    "src": "16122:22:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7105,
                                    "name": "Panic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3602,
                                    "src": "16110:5:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                      "typeString": "type(library Panic)"
                                    }
                                  },
                                  "id": 7107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "16116:5:23",
                                  "memberName": "panic",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3601,
                                  "src": "16110:11:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) pure"
                                  }
                                },
                                "id": 7110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16110:35:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7111,
                              "nodeType": "ExpressionStatement",
                              "src": "16110:35:23"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7114,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7096,
                          "src": "16172:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7092,
                        "id": 7115,
                        "nodeType": "Return",
                        "src": "16165:13:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7082,
                    "nodeType": "StructuredDocumentation",
                    "src": "15247:678:23",
                    "text": " @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."
                  },
                  "id": 7117,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "modExp",
                  "nameLocation": "15939:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7089,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7084,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "15954:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7117,
                        "src": "15946:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15946:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7086,
                        "mutability": "mutable",
                        "name": "e",
                        "nameLocation": "15965:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7117,
                        "src": "15957:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7085,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15957:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7088,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "15976:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7117,
                        "src": "15968:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7087,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15968:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15945:33:23"
                  },
                  "returnParameters": {
                    "id": 7092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7091,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7117,
                        "src": "16002:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7090,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16002:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16001:9:23"
                  },
                  "scope": 7931,
                  "src": "15930:255:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7140,
                    "nodeType": "Block",
                    "src": "17039:1493:23",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7131,
                            "name": "m",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7124,
                            "src": "17053:1:23",
                            "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": "17058:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17053:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7138,
                        "nodeType": "IfStatement",
                        "src": "17049:29:23",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 7134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17069:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "hexValue": "30",
                                "id": 7135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17076:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 7136,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17068:10:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                              "typeString": "tuple(bool,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 7130,
                          "id": 7137,
                          "nodeType": "Return",
                          "src": "17061:17:23"
                        }
                      },
                      {
                        "AST": {
                          "nativeSrc": "17113:1413:23",
                          "nodeType": "YulBlock",
                          "src": "17113:1413:23",
                          "statements": [
                            {
                              "nativeSrc": "17127:22:23",
                              "nodeType": "YulVariableDeclaration",
                              "src": "17127:22:23",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "17144:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "17144:4:23",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "17138:5:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "17138:5:23"
                                },
                                "nativeSrc": "17138:11:23",
                                "nodeType": "YulFunctionCall",
                                "src": "17138:11:23"
                              },
                              "variables": [
                                {
                                  "name": "ptr",
                                  "nativeSrc": "17131:3:23",
                                  "nodeType": "YulTypedName",
                                  "src": "17131:3:23",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ptr",
                                    "nativeSrc": "18057:3:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "18057:3:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18062:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "18062:4:23",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18050:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18050:6:23"
                                },
                                "nativeSrc": "18050:17:23",
                                "nodeType": "YulFunctionCall",
                                "src": "18050:17:23"
                              },
                              "nativeSrc": "18050:17:23",
                              "nodeType": "YulExpressionStatement",
                              "src": "18050:17:23"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18091:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "18091:3:23"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18096:4:23",
                                        "nodeType": "YulLiteral",
                                        "src": "18096:4:23",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18087:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "18087:3:23"
                                    },
                                    "nativeSrc": "18087:14:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18087:14:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18103:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "18103:4:23",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18080:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18080:6:23"
                                },
                                "nativeSrc": "18080:28:23",
                                "nodeType": "YulFunctionCall",
                                "src": "18080:28:23"
                              },
                              "nativeSrc": "18080:28:23",
                              "nodeType": "YulExpressionStatement",
                              "src": "18080:28:23"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18132:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "18132:3:23"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18137:4:23",
                                        "nodeType": "YulLiteral",
                                        "src": "18137:4:23",
                                        "type": "",
                                        "value": "0x40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18128:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "18128:3:23"
                                    },
                                    "nativeSrc": "18128:14:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18128:14:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18144:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "18144:4:23",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18121:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18121:6:23"
                                },
                                "nativeSrc": "18121:28:23",
                                "nodeType": "YulFunctionCall",
                                "src": "18121:28:23"
                              },
                              "nativeSrc": "18121:28:23",
                              "nodeType": "YulExpressionStatement",
                              "src": "18121:28:23"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18173:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "18173:3:23"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18178:4:23",
                                        "nodeType": "YulLiteral",
                                        "src": "18178:4:23",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18169:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "18169:3:23"
                                    },
                                    "nativeSrc": "18169:14:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18169:14:23"
                                  },
                                  {
                                    "name": "b",
                                    "nativeSrc": "18185:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "18185:1:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18162:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18162:6:23"
                                },
                                "nativeSrc": "18162:25:23",
                                "nodeType": "YulFunctionCall",
                                "src": "18162:25:23"
                              },
                              "nativeSrc": "18162:25:23",
                              "nodeType": "YulExpressionStatement",
                              "src": "18162:25:23"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18211:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "18211:3:23"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18216:4:23",
                                        "nodeType": "YulLiteral",
                                        "src": "18216:4:23",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18207:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "18207:3:23"
                                    },
                                    "nativeSrc": "18207:14:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18207:14:23"
                                  },
                                  {
                                    "name": "e",
                                    "nativeSrc": "18223:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "18223:1:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18200:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18200:6:23"
                                },
                                "nativeSrc": "18200:25:23",
                                "nodeType": "YulFunctionCall",
                                "src": "18200:25:23"
                              },
                              "nativeSrc": "18200:25:23",
                              "nodeType": "YulExpressionStatement",
                              "src": "18200:25:23"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nativeSrc": "18249:3:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "18249:3:23"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "18254:4:23",
                                        "nodeType": "YulLiteral",
                                        "src": "18254:4:23",
                                        "type": "",
                                        "value": "0xa0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "18245:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "18245:3:23"
                                    },
                                    "nativeSrc": "18245:14:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18245:14:23"
                                  },
                                  {
                                    "name": "m",
                                    "nativeSrc": "18261:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "18261:1:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "18238:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18238:6:23"
                                },
                                "nativeSrc": "18238:25:23",
                                "nodeType": "YulFunctionCall",
                                "src": "18238:25:23"
                              },
                              "nativeSrc": "18238:25:23",
                              "nodeType": "YulExpressionStatement",
                              "src": "18238:25:23"
                            },
                            {
                              "nativeSrc": "18425:57:23",
                              "nodeType": "YulAssignment",
                              "src": "18425:57:23",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nativeSrc": "18447:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "18447:3:23"
                                    },
                                    "nativeSrc": "18447:5:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "18447:5:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18454:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "18454:4:23",
                                    "type": "",
                                    "value": "0x05"
                                  },
                                  {
                                    "name": "ptr",
                                    "nativeSrc": "18460:3:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "18460:3:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18465:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "18465:4:23",
                                    "type": "",
                                    "value": "0xc0"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18471:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "18471:4:23",
                                    "type": "",
                                    "value": "0x00"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18477:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "18477:4:23",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nativeSrc": "18436:10:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18436:10:23"
                                },
                                "nativeSrc": "18436:46:23",
                                "nodeType": "YulFunctionCall",
                                "src": "18436:46:23"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nativeSrc": "18425:7:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18425:7:23"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "18495:21:23",
                              "nodeType": "YulAssignment",
                              "src": "18495:21:23",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "18511:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "18511:4:23",
                                    "type": "",
                                    "value": "0x00"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "18505:5:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18505:5:23"
                                },
                                "nativeSrc": "18505:11:23",
                                "nodeType": "YulFunctionCall",
                                "src": "18505:11:23"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nativeSrc": "18495:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "18495:6:23"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 7120,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18185:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7122,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18223:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7124,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18261:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7129,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18495:6:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7127,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18425:7:23",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 7139,
                        "nodeType": "InlineAssembly",
                        "src": "17088:1438:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7118,
                    "nodeType": "StructuredDocumentation",
                    "src": "16191:738:23",
                    "text": " @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."
                  },
                  "id": 7141,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryModExp",
                  "nameLocation": "16943:9:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7120,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "16961:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7141,
                        "src": "16953:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16953:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7122,
                        "mutability": "mutable",
                        "name": "e",
                        "nameLocation": "16972:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7141,
                        "src": "16964:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16964:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7124,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "16983:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7141,
                        "src": "16975:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16975:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16952:33:23"
                  },
                  "returnParameters": {
                    "id": 7130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7127,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "17014:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7141,
                        "src": "17009:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7126,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17009:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7129,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "17031:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7141,
                        "src": "17023:14:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17023:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17008:30:23"
                  },
                  "scope": 7931,
                  "src": "16934:1598:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7176,
                    "nodeType": "Block",
                    "src": "18729:179:23",
                    "statements": [
                      {
                        "assignments": [
                          7154,
                          7156
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7154,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "18745:7:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 7176,
                            "src": "18740:12:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7153,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "18740:4:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7156,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "18767:6:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 7176,
                            "src": "18754:19:23",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 7155,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "18754:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7162,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7158,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7144,
                              "src": "18787:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 7159,
                              "name": "e",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7146,
                              "src": "18790:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 7160,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7148,
                              "src": "18793:1:23",
                              "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"
                              }
                            ],
                            "id": 7157,
                            "name": "tryModExp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              7141,
                              7223
                            ],
                            "referencedDeclaration": 7223,
                            "src": "18777:9:23",
                            "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": 7161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18777:18:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18739:56:23"
                      },
                      {
                        "condition": {
                          "id": 7164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "18809:8:23",
                          "subExpression": {
                            "id": 7163,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7154,
                            "src": "18810:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7173,
                        "nodeType": "IfStatement",
                        "src": "18805:74:23",
                        "trueBody": {
                          "id": 7172,
                          "nodeType": "Block",
                          "src": "18819:60:23",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 7168,
                                      "name": "Panic",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3602,
                                      "src": "18845:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                        "typeString": "type(library Panic)"
                                      }
                                    },
                                    "id": 7169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberLocation": "18851:16:23",
                                    "memberName": "DIVISION_BY_ZERO",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3569,
                                    "src": "18845:22:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7165,
                                    "name": "Panic",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3602,
                                    "src": "18833:5:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Panic_$3602_$",
                                      "typeString": "type(library Panic)"
                                    }
                                  },
                                  "id": 7167,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "18839:5:23",
                                  "memberName": "panic",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3601,
                                  "src": "18833:11:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256) pure"
                                  }
                                },
                                "id": 7170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18833:35:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7171,
                              "nodeType": "ExpressionStatement",
                              "src": "18833:35:23"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7174,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7156,
                          "src": "18895:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 7152,
                        "id": 7175,
                        "nodeType": "Return",
                        "src": "18888:13:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7142,
                    "nodeType": "StructuredDocumentation",
                    "src": "18538:85:23",
                    "text": " @dev Variant of {modExp} that supports inputs of arbitrary length."
                  },
                  "id": 7177,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "modExp",
                  "nameLocation": "18637:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7144,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "18657:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7177,
                        "src": "18644:14:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7143,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18644:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7146,
                        "mutability": "mutable",
                        "name": "e",
                        "nameLocation": "18673:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7177,
                        "src": "18660:14:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7145,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18660:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7148,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "18689:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7177,
                        "src": "18676:14:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7147,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18676:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18643:48:23"
                  },
                  "returnParameters": {
                    "id": 7152,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7151,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7177,
                        "src": "18715:12:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7150,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18715:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18714:14:23"
                  },
                  "scope": 7931,
                  "src": "18628:280:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7222,
                    "nodeType": "Block",
                    "src": "19162:771:23",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [
                            {
                              "id": 7192,
                              "name": "m",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7184,
                              "src": "19187:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7191,
                            "name": "_zeroBytes",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7256,
                            "src": "19176:10:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (bytes memory) pure returns (bool)"
                            }
                          },
                          "id": 7193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19176:13:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7201,
                        "nodeType": "IfStatement",
                        "src": "19172:47:23",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "66616c7365",
                                "id": 7194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19199:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 7197,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19216:1:23",
                                    "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": 7196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "19206:9:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (bytes memory)"
                                  },
                                  "typeName": {
                                    "id": 7195,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19210:5:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  }
                                },
                                "id": 7198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19206:12:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 7199,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "19198:21:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bool,bytes memory)"
                            }
                          },
                          "functionReturnParameters": 7190,
                          "id": 7200,
                          "nodeType": "Return",
                          "src": "19191:28:23"
                        }
                      },
                      {
                        "assignments": [
                          7203
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7203,
                            "mutability": "mutable",
                            "name": "mLen",
                            "nameLocation": "19238:4:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 7222,
                            "src": "19230:12:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7202,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19230:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7206,
                        "initialValue": {
                          "expression": {
                            "id": 7204,
                            "name": "m",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7184,
                            "src": "19245:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 7205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "19247:6:23",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "19245:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19230:23:23"
                      },
                      {
                        "expression": {
                          "id": 7219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7207,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7189,
                            "src": "19335:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 7210,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7180,
                                  "src": "19361:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 7211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "19363:6:23",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "19361:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 7212,
                                  "name": "e",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7182,
                                  "src": "19371:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 7213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "19373:6:23",
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "19371:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7214,
                                "name": "mLen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7203,
                                "src": "19381:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7215,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7180,
                                "src": "19387:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 7216,
                                "name": "e",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7182,
                                "src": "19390:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 7217,
                                "name": "m",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7184,
                                "src": "19393:1:23",
                                "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": 7208,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "19344:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 7209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "19348:12:23",
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "src": "19344:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 7218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19344:51:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "19335:60:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 7220,
                        "nodeType": "ExpressionStatement",
                        "src": "19335:60:23"
                      },
                      {
                        "AST": {
                          "nativeSrc": "19431:496:23",
                          "nodeType": "YulBlock",
                          "src": "19431:496:23",
                          "statements": [
                            {
                              "nativeSrc": "19445:32:23",
                              "nodeType": "YulVariableDeclaration",
                              "src": "19445:32:23",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "result",
                                    "nativeSrc": "19464:6:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "19464:6:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19472:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "19472:4:23",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "19460:3:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "19460:3:23"
                                },
                                "nativeSrc": "19460:17:23",
                                "nodeType": "YulFunctionCall",
                                "src": "19460:17:23"
                              },
                              "variables": [
                                {
                                  "name": "dataPtr",
                                  "nativeSrc": "19449:7:23",
                                  "nodeType": "YulTypedName",
                                  "src": "19449:7:23",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nativeSrc": "19567:73:23",
                              "nodeType": "YulAssignment",
                              "src": "19567:73:23",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nativeSrc": "19589:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "19589:3:23"
                                    },
                                    "nativeSrc": "19589:5:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19589:5:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19596:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "19596:4:23",
                                    "type": "",
                                    "value": "0x05"
                                  },
                                  {
                                    "name": "dataPtr",
                                    "nativeSrc": "19602:7:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "19602:7:23"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "result",
                                        "nativeSrc": "19617:6:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "19617:6:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "19611:5:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "19611:5:23"
                                    },
                                    "nativeSrc": "19611:13:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19611:13:23"
                                  },
                                  {
                                    "name": "dataPtr",
                                    "nativeSrc": "19626:7:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "19626:7:23"
                                  },
                                  {
                                    "name": "mLen",
                                    "nativeSrc": "19635:4:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "19635:4:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nativeSrc": "19578:10:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "19578:10:23"
                                },
                                "nativeSrc": "19578:62:23",
                                "nodeType": "YulFunctionCall",
                                "src": "19578:62:23"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nativeSrc": "19567:7:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "19567:7:23"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "result",
                                    "nativeSrc": "19796:6:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "19796:6:23"
                                  },
                                  {
                                    "name": "mLen",
                                    "nativeSrc": "19804:4:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "19804:4:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "19789:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "19789:6:23"
                                },
                                "nativeSrc": "19789:20:23",
                                "nodeType": "YulFunctionCall",
                                "src": "19789:20:23"
                              },
                              "nativeSrc": "19789:20:23",
                              "nodeType": "YulExpressionStatement",
                              "src": "19789:20:23"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "19892:4:23",
                                    "nodeType": "YulLiteral",
                                    "src": "19892:4:23",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataPtr",
                                        "nativeSrc": "19902:7:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "19902:7:23"
                                      },
                                      {
                                        "name": "mLen",
                                        "nativeSrc": "19911:4:23",
                                        "nodeType": "YulIdentifier",
                                        "src": "19911:4:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "19898:3:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "19898:3:23"
                                    },
                                    "nativeSrc": "19898:18:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "19898:18:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "19885:6:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "19885:6:23"
                                },
                                "nativeSrc": "19885:32:23",
                                "nodeType": "YulFunctionCall",
                                "src": "19885:32:23"
                              },
                              "nativeSrc": "19885:32:23",
                              "nodeType": "YulExpressionStatement",
                              "src": "19885:32:23"
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 7203,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19635:4:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7203,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19804:4:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7203,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19911:4:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7189,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19464:6:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7189,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19617:6:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7189,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19796:6:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7187,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19567:7:23",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 7221,
                        "nodeType": "InlineAssembly",
                        "src": "19406:521:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7178,
                    "nodeType": "StructuredDocumentation",
                    "src": "18914:88:23",
                    "text": " @dev Variant of {tryModExp} that supports inputs of arbitrary length."
                  },
                  "id": 7223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tryModExp",
                  "nameLocation": "19016:9:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7180,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "19048:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7223,
                        "src": "19035:14:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7179,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19035:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7182,
                        "mutability": "mutable",
                        "name": "e",
                        "nameLocation": "19072:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7223,
                        "src": "19059:14:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7181,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19059:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7184,
                        "mutability": "mutable",
                        "name": "m",
                        "nameLocation": "19096:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7223,
                        "src": "19083:14:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7183,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19083:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19025:78:23"
                  },
                  "returnParameters": {
                    "id": 7190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7187,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "19132:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7223,
                        "src": "19127:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7186,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "19127:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7189,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "19154:6:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7223,
                        "src": "19141:19:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7188,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19141:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19126:35:23"
                  },
                  "scope": 7931,
                  "src": "19007:926:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7255,
                    "nodeType": "Block",
                    "src": "20088:176:23",
                    "statements": [
                      {
                        "body": {
                          "id": 7251,
                          "nodeType": "Block",
                          "src": "20145:92:23",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 7246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 7242,
                                    "name": "byteArray",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7226,
                                    "src": "20163:9:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 7244,
                                  "indexExpression": {
                                    "id": 7243,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7232,
                                    "src": "20173:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "20163:12:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 7245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20179:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "20163:17:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7250,
                              "nodeType": "IfStatement",
                              "src": "20159:68:23",
                              "trueBody": {
                                "id": 7249,
                                "nodeType": "Block",
                                "src": "20182:45:23",
                                "statements": [
                                  {
                                    "expression": {
                                      "hexValue": "66616c7365",
                                      "id": 7247,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20207:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "functionReturnParameters": 7230,
                                    "id": 7248,
                                    "nodeType": "Return",
                                    "src": "20200:12:23"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7235,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7232,
                            "src": "20118:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 7236,
                              "name": "byteArray",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7226,
                              "src": "20122:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 7237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "20132:6:23",
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "20122:16:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20118:20:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7252,
                        "initializationExpression": {
                          "assignments": [
                            7232
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 7232,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "20111:1:23",
                              "nodeType": "VariableDeclaration",
                              "scope": 7252,
                              "src": "20103:9:23",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 7231,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "20103:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 7234,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 7233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20115:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "20103:13:23"
                        },
                        "isSimpleCounterLoop": true,
                        "loopExpression": {
                          "expression": {
                            "id": 7240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": true,
                            "src": "20140:3:23",
                            "subExpression": {
                              "id": 7239,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7232,
                              "src": "20142:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 7241,
                          "nodeType": "ExpressionStatement",
                          "src": "20140:3:23"
                        },
                        "nodeType": "ForStatement",
                        "src": "20098:139:23"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 7253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "20253:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 7230,
                        "id": 7254,
                        "nodeType": "Return",
                        "src": "20246:11:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7224,
                    "nodeType": "StructuredDocumentation",
                    "src": "19939:72:23",
                    "text": " @dev Returns whether the provided byte array is zero."
                  },
                  "id": 7256,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_zeroBytes",
                  "nameLocation": "20025:10:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7227,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7226,
                        "mutability": "mutable",
                        "name": "byteArray",
                        "nameLocation": "20049:9:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7256,
                        "src": "20036:22:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7225,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "20036:5:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20035:24:23"
                  },
                  "returnParameters": {
                    "id": 7230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7229,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7256,
                        "src": "20082:4:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7228,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20082:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20081:6:23"
                  },
                  "scope": 7931,
                  "src": "20016:248:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 7474,
                    "nodeType": "Block",
                    "src": "20624:5124:23",
                    "statements": [
                      {
                        "id": 7473,
                        "nodeType": "UncheckedBlock",
                        "src": "20634:5108:23",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7264,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7259,
                                "src": "20728:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 7265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20733:1:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "20728:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7270,
                            "nodeType": "IfStatement",
                            "src": "20724:53:23",
                            "trueBody": {
                              "id": 7269,
                              "nodeType": "Block",
                              "src": "20736:41:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7267,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7259,
                                    "src": "20761:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "functionReturnParameters": 7263,
                                  "id": 7268,
                                  "nodeType": "Return",
                                  "src": "20754:8:23"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              7272
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7272,
                                "mutability": "mutable",
                                "name": "aa",
                                "nameLocation": "21712:2:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7473,
                                "src": "21704:10:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7271,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21704:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7274,
                            "initialValue": {
                              "id": 7273,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7259,
                              "src": "21717:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "21704:14:23"
                          },
                          {
                            "assignments": [
                              7276
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7276,
                                "mutability": "mutable",
                                "name": "xn",
                                "nameLocation": "21740:2:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7473,
                                "src": "21732:10:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7275,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21732:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7278,
                            "initialValue": {
                              "hexValue": "31",
                              "id": 7277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21745:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "21732:14:23"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7279,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "21765:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                      "typeString": "int_const 3402...(31 digits omitted)...1456"
                                    },
                                    "id": 7282,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 7280,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21772:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "313238",
                                      "id": 7281,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21777:3:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_128_by_1",
                                        "typeString": "int_const 128"
                                      },
                                      "value": "128"
                                    },
                                    "src": "21772:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                      "typeString": "int_const 3402...(31 digits omitted)...1456"
                                    }
                                  }
                                ],
                                "id": 7283,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "21771:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                }
                              },
                              "src": "21765:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7294,
                            "nodeType": "IfStatement",
                            "src": "21761:92:23",
                            "trueBody": {
                              "id": 7293,
                              "nodeType": "Block",
                              "src": "21783:70:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7285,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7272,
                                      "src": "21801:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "313238",
                                      "id": 7286,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21808:3:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_128_by_1",
                                        "typeString": "int_const 128"
                                      },
                                      "value": "128"
                                    },
                                    "src": "21801:10:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7288,
                                  "nodeType": "ExpressionStatement",
                                  "src": "21801:10:23"
                                },
                                {
                                  "expression": {
                                    "id": 7291,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7289,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7276,
                                      "src": "21829:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "3634",
                                      "id": 7290,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21836:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "21829:9:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7292,
                                  "nodeType": "ExpressionStatement",
                                  "src": "21829:9:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7300,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7295,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "21870:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                      "typeString": "int_const 18446744073709551616"
                                    },
                                    "id": 7298,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 7296,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21877:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "3634",
                                      "id": 7297,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21882:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "21877:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                      "typeString": "int_const 18446744073709551616"
                                    }
                                  }
                                ],
                                "id": 7299,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "21876:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                  "typeString": "int_const 18446744073709551616"
                                }
                              },
                              "src": "21870:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7310,
                            "nodeType": "IfStatement",
                            "src": "21866:90:23",
                            "trueBody": {
                              "id": 7309,
                              "nodeType": "Block",
                              "src": "21887:69:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7303,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7301,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7272,
                                      "src": "21905:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "3634",
                                      "id": 7302,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21912:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "21905:9:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7304,
                                  "nodeType": "ExpressionStatement",
                                  "src": "21905:9:23"
                                },
                                {
                                  "expression": {
                                    "id": 7307,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7305,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7276,
                                      "src": "21932:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "3332",
                                      "id": 7306,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21939:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "src": "21932:9:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7308,
                                  "nodeType": "ExpressionStatement",
                                  "src": "21932:9:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7311,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "21973:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_4294967296_by_1",
                                      "typeString": "int_const 4294967296"
                                    },
                                    "id": 7314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 7312,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21980:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "3332",
                                      "id": 7313,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "21985:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "src": "21980:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4294967296_by_1",
                                      "typeString": "int_const 4294967296"
                                    }
                                  }
                                ],
                                "id": 7315,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "21979:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                  "typeString": "int_const 4294967296"
                                }
                              },
                              "src": "21973:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7326,
                            "nodeType": "IfStatement",
                            "src": "21969:90:23",
                            "trueBody": {
                              "id": 7325,
                              "nodeType": "Block",
                              "src": "21990:69:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7319,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7317,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7272,
                                      "src": "22008:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "3332",
                                      "id": 7318,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22015:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "src": "22008:9:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7320,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22008:9:23"
                                },
                                {
                                  "expression": {
                                    "id": 7323,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7321,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7276,
                                      "src": "22035:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "3136",
                                      "id": 7322,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22042:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "16"
                                    },
                                    "src": "22035:9:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7324,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22035:9:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7327,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "22076:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_65536_by_1",
                                      "typeString": "int_const 65536"
                                    },
                                    "id": 7330,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 7328,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22083:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "3136",
                                      "id": 7329,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22088:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "16"
                                    },
                                    "src": "22083:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_65536_by_1",
                                      "typeString": "int_const 65536"
                                    }
                                  }
                                ],
                                "id": 7331,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "22082:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_65536_by_1",
                                  "typeString": "int_const 65536"
                                }
                              },
                              "src": "22076:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7342,
                            "nodeType": "IfStatement",
                            "src": "22072:89:23",
                            "trueBody": {
                              "id": 7341,
                              "nodeType": "Block",
                              "src": "22093:68:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7335,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7333,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7272,
                                      "src": "22111:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "3136",
                                      "id": 7334,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22118:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "16"
                                    },
                                    "src": "22111:9:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7336,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22111:9:23"
                                },
                                {
                                  "expression": {
                                    "id": 7339,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7337,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7276,
                                      "src": "22138:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "38",
                                      "id": 7338,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22145:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "22138:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7340,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22138:8:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7343,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "22178:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    },
                                    "id": 7346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 7344,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22185:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "38",
                                      "id": 7345,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22190:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "22185:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_256_by_1",
                                      "typeString": "int_const 256"
                                    }
                                  }
                                ],
                                "id": 7347,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "22184:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_256_by_1",
                                  "typeString": "int_const 256"
                                }
                              },
                              "src": "22178:14:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7358,
                            "nodeType": "IfStatement",
                            "src": "22174:87:23",
                            "trueBody": {
                              "id": 7357,
                              "nodeType": "Block",
                              "src": "22194:67:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7351,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7349,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7272,
                                      "src": "22212:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "38",
                                      "id": 7350,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22219:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "22212:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7352,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22212:8:23"
                                },
                                {
                                  "expression": {
                                    "id": 7355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7353,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7276,
                                      "src": "22238:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "34",
                                      "id": 7354,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22245:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "22238:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7356,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22238:8:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7359,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "22278:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    "id": 7362,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 7360,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22285:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "34",
                                      "id": 7361,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22290:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "22285:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    }
                                  }
                                ],
                                "id": 7363,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "22284:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_16_by_1",
                                  "typeString": "int_const 16"
                                }
                              },
                              "src": "22278:14:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7374,
                            "nodeType": "IfStatement",
                            "src": "22274:87:23",
                            "trueBody": {
                              "id": 7373,
                              "nodeType": "Block",
                              "src": "22294:67:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7365,
                                      "name": "aa",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7272,
                                      "src": "22312:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": ">>=",
                                    "rightHandSide": {
                                      "hexValue": "34",
                                      "id": 7366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22319:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "22312:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7368,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22312:8:23"
                                },
                                {
                                  "expression": {
                                    "id": 7371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7369,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7276,
                                      "src": "22338:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "32",
                                      "id": 7370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22345:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "22338:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7372,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22338:8:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7375,
                                "name": "aa",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "22378:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    },
                                    "id": 7378,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 7376,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22385:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 7377,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22390:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "22385:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4_by_1",
                                      "typeString": "int_const 4"
                                    }
                                  }
                                ],
                                "id": 7379,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "22384:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_4_by_1",
                                  "typeString": "int_const 4"
                                }
                              },
                              "src": "22378:14:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7386,
                            "nodeType": "IfStatement",
                            "src": "22374:61:23",
                            "trueBody": {
                              "id": 7385,
                              "nodeType": "Block",
                              "src": "22394:41:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7383,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7381,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7276,
                                      "src": "22412:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "<<=",
                                    "rightHandSide": {
                                      "hexValue": "31",
                                      "id": 7382,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "22419:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "22412:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7384,
                                  "nodeType": "ExpressionStatement",
                                  "src": "22412:8:23"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "id": 7394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7387,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7276,
                                "src": "22855:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7390,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "33",
                                        "id": 7388,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "22861:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "3"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 7389,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7276,
                                        "src": "22865:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "22861:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7391,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "22860:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22872:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "22860:13:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "22855:18:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7395,
                            "nodeType": "ExpressionStatement",
                            "src": "22855:18:23"
                          },
                          {
                            "expression": {
                              "id": 7405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7396,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7276,
                                "src": "24760:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7401,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7397,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7276,
                                        "src": "24766:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7400,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7398,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7259,
                                          "src": "24771:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 7399,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7276,
                                          "src": "24775:2:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "24771:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24766:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7402,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24765:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24782:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "24765:18:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24760:23:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7406,
                            "nodeType": "ExpressionStatement",
                            "src": "24760:23:23"
                          },
                          {
                            "expression": {
                              "id": 7416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7407,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7276,
                                "src": "24869:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7412,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7408,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7276,
                                        "src": "24875:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7411,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7409,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7259,
                                          "src": "24880:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 7410,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7276,
                                          "src": "24884:2:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "24880:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24875:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7413,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24874:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24891:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "24874:18:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24869:23:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7417,
                            "nodeType": "ExpressionStatement",
                            "src": "24869:23:23"
                          },
                          {
                            "expression": {
                              "id": 7427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7418,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7276,
                                "src": "24980:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7423,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7419,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7276,
                                        "src": "24986:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7422,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7420,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7259,
                                          "src": "24991:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 7421,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7276,
                                          "src": "24995:2:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "24991:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "24986:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7424,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "24985:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25002:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "24985:18:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "24980:23:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7428,
                            "nodeType": "ExpressionStatement",
                            "src": "24980:23:23"
                          },
                          {
                            "expression": {
                              "id": 7438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7429,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7276,
                                "src": "25089:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7434,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7430,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7276,
                                        "src": "25095:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7433,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7431,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7259,
                                          "src": "25100:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 7432,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7276,
                                          "src": "25104:2:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "25100:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25095:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7435,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25094:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7436,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25111:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "25094:18:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "25089:23:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7439,
                            "nodeType": "ExpressionStatement",
                            "src": "25089:23:23"
                          },
                          {
                            "expression": {
                              "id": 7449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7440,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7276,
                                "src": "25199:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7445,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7441,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7276,
                                        "src": "25205:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7444,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7442,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7259,
                                          "src": "25210:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 7443,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7276,
                                          "src": "25214:2:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "25210:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25205:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7446,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25204:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7447,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25221:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "25204:18:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "25199:23:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7450,
                            "nodeType": "ExpressionStatement",
                            "src": "25199:23:23"
                          },
                          {
                            "expression": {
                              "id": 7460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 7451,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7276,
                                "src": "25309:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7456,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7452,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7276,
                                        "src": "25315:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7455,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7453,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7259,
                                          "src": "25320:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 7454,
                                          "name": "xn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7276,
                                          "src": "25324:2:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "25320:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25315:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7457,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "25314:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7458,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25331:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "25314:18:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "25309:23:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7461,
                            "nodeType": "ExpressionStatement",
                            "src": "25309:23:23"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7462,
                                "name": "xn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7276,
                                "src": "25698:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7469,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7465,
                                      "name": "xn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7276,
                                      "src": "25719:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7468,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7466,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7259,
                                        "src": "25724:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 7467,
                                        "name": "xn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7276,
                                        "src": "25728:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "25724:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "25719:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7463,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9696,
                                    "src": "25703:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 7464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "25712:6:23",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9695,
                                  "src": "25703:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 7470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25703:28:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "25698:33:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7263,
                            "id": 7472,
                            "nodeType": "Return",
                            "src": "25691:40:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7257,
                    "nodeType": "StructuredDocumentation",
                    "src": "20270:292:23",
                    "text": " @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."
                  },
                  "id": 7475,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sqrt",
                  "nameLocation": "20576:4:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7259,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "20589:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7475,
                        "src": "20581:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7258,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20581:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20580:11:23"
                  },
                  "returnParameters": {
                    "id": 7263,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7262,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7475,
                        "src": "20615:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7261,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20615:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20614:9:23"
                  },
                  "scope": 7931,
                  "src": "20567:5181:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7508,
                    "nodeType": "Block",
                    "src": "25921:171:23",
                    "statements": [
                      {
                        "id": 7507,
                        "nodeType": "UncheckedBlock",
                        "src": "25931:155:23",
                        "statements": [
                          {
                            "assignments": [
                              7487
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7487,
                                "mutability": "mutable",
                                "name": "result",
                                "nameLocation": "25963:6:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7507,
                                "src": "25955:14:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7486,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "25955:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7491,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 7489,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7478,
                                  "src": "25977:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7488,
                                "name": "sqrt",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  7475,
                                  7509
                                ],
                                "referencedDeclaration": 7475,
                                "src": "25972:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25972:7:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "25955:24:23"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7492,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7487,
                                "src": "26000:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 7503,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 7496,
                                          "name": "rounding",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7481,
                                          "src": "26042:8:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$6322",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_Rounding_$6322",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        ],
                                        "id": 7495,
                                        "name": "unsignedRoundsUp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7930,
                                        "src": "26025:16:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6322_$returns$_t_bool_$",
                                          "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                        }
                                      },
                                      "id": 7497,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26025:26:23",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7502,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7500,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7498,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7487,
                                          "src": "26055:6:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 7499,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7487,
                                          "src": "26064:6:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26055:15:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 7501,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7478,
                                        "src": "26073:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "26055:19:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "26025:49:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7493,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9696,
                                    "src": "26009:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 7494,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "26018:6:23",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9695,
                                  "src": "26009:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 7504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26009:66:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26000:75:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7485,
                            "id": 7506,
                            "nodeType": "Return",
                            "src": "25993:82:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7476,
                    "nodeType": "StructuredDocumentation",
                    "src": "25754:86:23",
                    "text": " @dev Calculates sqrt(a), following the selected rounding direction."
                  },
                  "id": 7509,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sqrt",
                  "nameLocation": "25854:4:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7478,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "25867:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7509,
                        "src": "25859:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7477,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25859:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7481,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "25879:8:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7509,
                        "src": "25870:17:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$6322",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 7480,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7479,
                            "name": "Rounding",
                            "nameLocations": [
                              "25870:8:23"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6322,
                            "src": "25870:8:23"
                          },
                          "referencedDeclaration": 6322,
                          "src": "25870:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$6322",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25858:30:23"
                  },
                  "returnParameters": {
                    "id": 7485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7484,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7509,
                        "src": "25912:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25912:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25911:9:23"
                  },
                  "scope": 7931,
                  "src": "25845:247:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7599,
                    "nodeType": "Block",
                    "src": "26281:2334:23",
                    "statements": [
                      {
                        "expression": {
                          "id": 7526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7517,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7515,
                            "src": "26363:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7520,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7512,
                                    "src": "26383:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666",
                                    "id": 7521,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26387:34:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1",
                                      "typeString": "int_const 3402...(31 digits omitted)...1455"
                                    },
                                    "value": "0xffffffffffffffffffffffffffffffff"
                                  },
                                  "src": "26383:38:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7518,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "26367:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26376:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "26367:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26367:55:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "37",
                              "id": 7524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26426:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "26367:60:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26363:64:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7527,
                        "nodeType": "ExpressionStatement",
                        "src": "26363:64:23"
                      },
                      {
                        "expression": {
                          "id": 7540,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7528,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7515,
                            "src": "26503:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7533,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7531,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7512,
                                          "src": "26525:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 7532,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7515,
                                          "src": "26530:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26525:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7534,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "26524:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866666666666666666666666666666666",
                                    "id": 7535,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26535:18:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18446744073709551615_by_1",
                                      "typeString": "int_const 18446744073709551615"
                                    },
                                    "value": "0xffffffffffffffff"
                                  },
                                  "src": "26524:29:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7529,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "26508:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7530,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26517:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "26508:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26508:46:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "36",
                              "id": 7538,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26558:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              },
                              "value": "6"
                            },
                            "src": "26508:51:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26503:56:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7541,
                        "nodeType": "ExpressionStatement",
                        "src": "26503:56:23"
                      },
                      {
                        "expression": {
                          "id": 7554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7542,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7515,
                            "src": "26634:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7547,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7545,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7512,
                                          "src": "26656:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 7546,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7515,
                                          "src": "26661:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26656:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7548,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "26655:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666666666666666",
                                    "id": 7549,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26666:10:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4294967295_by_1",
                                      "typeString": "int_const 4294967295"
                                    },
                                    "value": "0xffffffff"
                                  },
                                  "src": "26655:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7543,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "26639:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26648:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "26639:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26639:38:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "35",
                              "id": 7552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26681:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            },
                            "src": "26639:43:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26634:48:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7555,
                        "nodeType": "ExpressionStatement",
                        "src": "26634:48:23"
                      },
                      {
                        "expression": {
                          "id": 7568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7556,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7515,
                            "src": "26757:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7564,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7561,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7559,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7512,
                                          "src": "26779:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 7560,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7515,
                                          "src": "26784:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26779:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7562,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "26778:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866666666",
                                    "id": 7563,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26789:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_65535_by_1",
                                      "typeString": "int_const 65535"
                                    },
                                    "value": "0xffff"
                                  },
                                  "src": "26778:17:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7557,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "26762:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7558,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26771:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "26762:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26762:34:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 7566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26800:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "26762:39:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26757:44:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7569,
                        "nodeType": "ExpressionStatement",
                        "src": "26757:44:23"
                      },
                      {
                        "expression": {
                          "id": 7582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7570,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7515,
                            "src": "26874:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7578,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7575,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7573,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7512,
                                          "src": "26896:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 7574,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7515,
                                          "src": "26901:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "26896:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7576,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "26895:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666",
                                    "id": 7577,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26906:4:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_255_by_1",
                                      "typeString": "int_const 255"
                                    },
                                    "value": "0xff"
                                  },
                                  "src": "26895:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7571,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "26879:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "26888:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "26879:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26879:32:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "33",
                              "id": 7580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26915:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_3_by_1",
                                "typeString": "int_const 3"
                              },
                              "value": "3"
                            },
                            "src": "26879:37:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26874:42:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7583,
                        "nodeType": "ExpressionStatement",
                        "src": "26874:42:23"
                      },
                      {
                        "expression": {
                          "id": 7596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7584,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7515,
                            "src": "26988:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7592,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7589,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7587,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7512,
                                          "src": "27010:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 7588,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7515,
                                          "src": "27015:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "27010:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7590,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "27009:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866",
                                    "id": 7591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27020:3:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_15_by_1",
                                      "typeString": "int_const 15"
                                    },
                                    "value": "0xf"
                                  },
                                  "src": "27009:14:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7585,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "26993:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "27002:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "26993:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26993:31:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 7594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "27028:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "26993:36:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26988:41:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7597,
                        "nodeType": "ExpressionStatement",
                        "src": "26988:41:23"
                      },
                      {
                        "AST": {
                          "nativeSrc": "28490:119:23",
                          "nodeType": "YulBlock",
                          "src": "28490:119:23",
                          "statements": [
                            {
                              "nativeSrc": "28504:95:23",
                              "nodeType": "YulAssignment",
                              "src": "28504:95:23",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "r",
                                    "nativeSrc": "28512:1:23",
                                    "nodeType": "YulIdentifier",
                                    "src": "28512:1:23"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nativeSrc": "28524:1:23",
                                            "nodeType": "YulIdentifier",
                                            "src": "28524:1:23"
                                          },
                                          {
                                            "name": "x",
                                            "nativeSrc": "28527:1:23",
                                            "nodeType": "YulIdentifier",
                                            "src": "28527:1:23"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shr",
                                          "nativeSrc": "28520:3:23",
                                          "nodeType": "YulIdentifier",
                                          "src": "28520:3:23"
                                        },
                                        "nativeSrc": "28520:9:23",
                                        "nodeType": "YulFunctionCall",
                                        "src": "28520:9:23"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "28531:66:23",
                                        "nodeType": "YulLiteral",
                                        "src": "28531:66:23",
                                        "type": "",
                                        "value": "0x0000010102020202030303030303030300000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "byte",
                                      "nativeSrc": "28515:4:23",
                                      "nodeType": "YulIdentifier",
                                      "src": "28515:4:23"
                                    },
                                    "nativeSrc": "28515:83:23",
                                    "nodeType": "YulFunctionCall",
                                    "src": "28515:83:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nativeSrc": "28509:2:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "28509:2:23"
                                },
                                "nativeSrc": "28509:90:23",
                                "nodeType": "YulFunctionCall",
                                "src": "28509:90:23"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nativeSrc": "28504:1:23",
                                  "nodeType": "YulIdentifier",
                                  "src": "28504:1:23"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 7515,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28504:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7515,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28512:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7515,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28524:1:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7512,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28527:1:23",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 7598,
                        "nodeType": "InlineAssembly",
                        "src": "28465:144:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7510,
                    "nodeType": "StructuredDocumentation",
                    "src": "26098:119:23",
                    "text": " @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."
                  },
                  "id": 7600,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log2",
                  "nameLocation": "26231:4:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7512,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "26244:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7600,
                        "src": "26236:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7511,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26236:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26235:11:23"
                  },
                  "returnParameters": {
                    "id": 7516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7515,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "26278:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7600,
                        "src": "26270:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26270:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26269:11:23"
                  },
                  "scope": 7931,
                  "src": "26222:2393:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7633,
                    "nodeType": "Block",
                    "src": "28848:175:23",
                    "statements": [
                      {
                        "id": 7632,
                        "nodeType": "UncheckedBlock",
                        "src": "28858:159:23",
                        "statements": [
                          {
                            "assignments": [
                              7612
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7612,
                                "mutability": "mutable",
                                "name": "result",
                                "nameLocation": "28890:6:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7632,
                                "src": "28882:14:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7611,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28882:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7616,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 7614,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7603,
                                  "src": "28904:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7613,
                                "name": "log2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  7600,
                                  7634
                                ],
                                "referencedDeclaration": 7600,
                                "src": "28899:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28899:11:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "28882:28:23"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7617,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7612,
                                "src": "28931:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 7628,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 7621,
                                          "name": "rounding",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7606,
                                          "src": "28973:8:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$6322",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_Rounding_$6322",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        ],
                                        "id": 7620,
                                        "name": "unsignedRoundsUp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7930,
                                        "src": "28956:16:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6322_$returns$_t_bool_$",
                                          "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                        }
                                      },
                                      "id": 7622,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "28956:26:23",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7627,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7625,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 7623,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "28986:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "id": 7624,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7612,
                                          "src": "28991:6:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "28986:11:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 7626,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7603,
                                        "src": "29000:5:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "28986:19:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "28956:49:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7618,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9696,
                                    "src": "28940:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 7619,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "28949:6:23",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9695,
                                  "src": "28940:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 7629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28940:66:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "28931:75:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7610,
                            "id": 7631,
                            "nodeType": "Return",
                            "src": "28924:82:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7601,
                    "nodeType": "StructuredDocumentation",
                    "src": "28621:142:23",
                    "text": " @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."
                  },
                  "id": 7634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log2",
                  "nameLocation": "28777:4:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7603,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "28790:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7634,
                        "src": "28782:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7602,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28782:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7606,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "28806:8:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7634,
                        "src": "28797:17:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$6322",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 7605,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7604,
                            "name": "Rounding",
                            "nameLocations": [
                              "28797:8:23"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6322,
                            "src": "28797:8:23"
                          },
                          "referencedDeclaration": 6322,
                          "src": "28797:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$6322",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28781:34:23"
                  },
                  "returnParameters": {
                    "id": 7610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7609,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7634,
                        "src": "28839:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7608,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28839:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28838:9:23"
                  },
                  "scope": 7931,
                  "src": "28768:255:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7762,
                    "nodeType": "Block",
                    "src": "29216:854:23",
                    "statements": [
                      {
                        "assignments": [
                          7643
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7643,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "29234:6:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 7762,
                            "src": "29226:14:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7642,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "29226:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7645,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 7644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "29243:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29226:18:23"
                      },
                      {
                        "id": 7759,
                        "nodeType": "UncheckedBlock",
                        "src": "29254:787:23",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7646,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7637,
                                "src": "29282:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(57 digits omitted)...0000"
                                },
                                "id": 7649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7647,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29291:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3634",
                                  "id": 7648,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29297:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_64_by_1",
                                    "typeString": "int_const 64"
                                  },
                                  "value": "64"
                                },
                                "src": "29291:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(57 digits omitted)...0000"
                                }
                              },
                              "src": "29282:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7662,
                            "nodeType": "IfStatement",
                            "src": "29278:103:23",
                            "trueBody": {
                              "id": 7661,
                              "nodeType": "Block",
                              "src": "29301:80:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7655,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7651,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7637,
                                      "src": "29319:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(57 digits omitted)...0000"
                                      },
                                      "id": 7654,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 7652,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29328:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "3634",
                                        "id": 7653,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29334:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_64_by_1",
                                          "typeString": "int_const 64"
                                        },
                                        "value": "64"
                                      },
                                      "src": "29328:8:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(57 digits omitted)...0000"
                                      }
                                    },
                                    "src": "29319:17:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7656,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29319:17:23"
                                },
                                {
                                  "expression": {
                                    "id": 7659,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7657,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7643,
                                      "src": "29354:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "3634",
                                      "id": 7658,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29364:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_64_by_1",
                                        "typeString": "int_const 64"
                                      },
                                      "value": "64"
                                    },
                                    "src": "29354:12:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7660,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29354:12:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7663,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7637,
                                "src": "29398:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(25 digits omitted)...0000"
                                },
                                "id": 7666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7664,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29407:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 7665,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29413:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "29407:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1",
                                  "typeString": "int_const 1000...(25 digits omitted)...0000"
                                }
                              },
                              "src": "29398:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7679,
                            "nodeType": "IfStatement",
                            "src": "29394:103:23",
                            "trueBody": {
                              "id": 7678,
                              "nodeType": "Block",
                              "src": "29417:80:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7672,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7668,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7637,
                                      "src": "29435:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(25 digits omitted)...0000"
                                      },
                                      "id": 7671,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 7669,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29444:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "3332",
                                        "id": 7670,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29450:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      },
                                      "src": "29444:8:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1",
                                        "typeString": "int_const 1000...(25 digits omitted)...0000"
                                      }
                                    },
                                    "src": "29435:17:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7673,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29435:17:23"
                                },
                                {
                                  "expression": {
                                    "id": 7676,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7674,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7643,
                                      "src": "29470:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "3332",
                                      "id": 7675,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29480:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_32_by_1",
                                        "typeString": "int_const 32"
                                      },
                                      "value": "32"
                                    },
                                    "src": "29470:12:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7677,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29470:12:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7680,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7637,
                                "src": "29514:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_10000000000000000_by_1",
                                  "typeString": "int_const 10000000000000000"
                                },
                                "id": 7683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7681,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29523:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "3136",
                                  "id": 7682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29529:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16_by_1",
                                    "typeString": "int_const 16"
                                  },
                                  "value": "16"
                                },
                                "src": "29523:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000000000000000_by_1",
                                  "typeString": "int_const 10000000000000000"
                                }
                              },
                              "src": "29514:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7696,
                            "nodeType": "IfStatement",
                            "src": "29510:103:23",
                            "trueBody": {
                              "id": 7695,
                              "nodeType": "Block",
                              "src": "29533:80:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7689,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7685,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7637,
                                      "src": "29551:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000000000000000_by_1",
                                        "typeString": "int_const 10000000000000000"
                                      },
                                      "id": 7688,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 7686,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29560:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "3136",
                                        "id": 7687,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29566:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_16_by_1",
                                          "typeString": "int_const 16"
                                        },
                                        "value": "16"
                                      },
                                      "src": "29560:8:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10000000000000000_by_1",
                                        "typeString": "int_const 10000000000000000"
                                      }
                                    },
                                    "src": "29551:17:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7690,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29551:17:23"
                                },
                                {
                                  "expression": {
                                    "id": 7693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7691,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7643,
                                      "src": "29586:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "3136",
                                      "id": 7692,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29596:2:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "16"
                                    },
                                    "src": "29586:12:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7694,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29586:12:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7697,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7637,
                                "src": "29630:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_100000000_by_1",
                                  "typeString": "int_const 100000000"
                                },
                                "id": 7700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29639:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "38",
                                  "id": 7699,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29645:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "8"
                                },
                                "src": "29639:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100000000_by_1",
                                  "typeString": "int_const 100000000"
                                }
                              },
                              "src": "29630:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7713,
                            "nodeType": "IfStatement",
                            "src": "29626:100:23",
                            "trueBody": {
                              "id": 7712,
                              "nodeType": "Block",
                              "src": "29648:78:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7706,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7702,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7637,
                                      "src": "29666:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100000000_by_1",
                                        "typeString": "int_const 100000000"
                                      },
                                      "id": 7705,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 7703,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29675:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "38",
                                        "id": 7704,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29681:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_8_by_1",
                                          "typeString": "int_const 8"
                                        },
                                        "value": "8"
                                      },
                                      "src": "29675:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100000000_by_1",
                                        "typeString": "int_const 100000000"
                                      }
                                    },
                                    "src": "29666:16:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7707,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29666:16:23"
                                },
                                {
                                  "expression": {
                                    "id": 7710,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7708,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7643,
                                      "src": "29700:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "38",
                                      "id": 7709,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29710:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "8"
                                    },
                                    "src": "29700:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7711,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29700:11:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7714,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7637,
                                "src": "29743:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "id": 7717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29752:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "34",
                                  "id": 7716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29758:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "29752:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                }
                              },
                              "src": "29743:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7730,
                            "nodeType": "IfStatement",
                            "src": "29739:100:23",
                            "trueBody": {
                              "id": 7729,
                              "nodeType": "Block",
                              "src": "29761:78:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7723,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7719,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7637,
                                      "src": "29779:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_10000_by_1",
                                        "typeString": "int_const 10000"
                                      },
                                      "id": 7722,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 7720,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29788:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "34",
                                        "id": 7721,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29794:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_4_by_1",
                                          "typeString": "int_const 4"
                                        },
                                        "value": "4"
                                      },
                                      "src": "29788:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_10000_by_1",
                                        "typeString": "int_const 10000"
                                      }
                                    },
                                    "src": "29779:16:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7724,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29779:16:23"
                                },
                                {
                                  "expression": {
                                    "id": 7727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7725,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7643,
                                      "src": "29813:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "34",
                                      "id": 7726,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29823:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "29813:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7728,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29813:11:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7735,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7731,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7637,
                                "src": "29856:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                },
                                "id": 7734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29865:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 7733,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29871:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "29865:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_100_by_1",
                                  "typeString": "int_const 100"
                                }
                              },
                              "src": "29856:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7747,
                            "nodeType": "IfStatement",
                            "src": "29852:100:23",
                            "trueBody": {
                              "id": 7746,
                              "nodeType": "Block",
                              "src": "29874:78:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7740,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7736,
                                      "name": "value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7637,
                                      "src": "29892:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      },
                                      "id": 7739,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3130",
                                        "id": 7737,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29901:2:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "hexValue": "32",
                                        "id": 7738,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "29907:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "29901:7:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      }
                                    },
                                    "src": "29892:16:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7741,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29892:16:23"
                                },
                                {
                                  "expression": {
                                    "id": 7744,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7742,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7643,
                                      "src": "29926:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "32",
                                      "id": 7743,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "29936:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "29926:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7745,
                                  "nodeType": "ExpressionStatement",
                                  "src": "29926:11:23"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7748,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7637,
                                "src": "29969:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "id": 7751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "3130",
                                  "id": 7749,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29978:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29984:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "29978:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                }
                              },
                              "src": "29969:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7758,
                            "nodeType": "IfStatement",
                            "src": "29965:66:23",
                            "trueBody": {
                              "id": 7757,
                              "nodeType": "Block",
                              "src": "29987:44:23",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7753,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7643,
                                      "src": "30005:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "31",
                                      "id": 7754,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "30015:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "30005:11:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7756,
                                  "nodeType": "ExpressionStatement",
                                  "src": "30005:11:23"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 7760,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7643,
                          "src": "30057:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7641,
                        "id": 7761,
                        "nodeType": "Return",
                        "src": "30050:13:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7635,
                    "nodeType": "StructuredDocumentation",
                    "src": "29029:120:23",
                    "text": " @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."
                  },
                  "id": 7763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log10",
                  "nameLocation": "29163:5:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7637,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "29177:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7763,
                        "src": "29169:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29169:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29168:15:23"
                  },
                  "returnParameters": {
                    "id": 7641,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7640,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7763,
                        "src": "29207:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7639,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29207:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29206:9:23"
                  },
                  "scope": 7931,
                  "src": "29154:916:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7796,
                    "nodeType": "Block",
                    "src": "30305:177:23",
                    "statements": [
                      {
                        "id": 7795,
                        "nodeType": "UncheckedBlock",
                        "src": "30315:161:23",
                        "statements": [
                          {
                            "assignments": [
                              7775
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7775,
                                "mutability": "mutable",
                                "name": "result",
                                "nameLocation": "30347:6:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7795,
                                "src": "30339:14:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7774,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "30339:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7779,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 7777,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7766,
                                  "src": "30362:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7776,
                                "name": "log10",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  7763,
                                  7797
                                ],
                                "referencedDeclaration": 7763,
                                "src": "30356:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7778,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30356:12:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "30339:29:23"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7780,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7775,
                                "src": "30389:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 7791,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 7784,
                                          "name": "rounding",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7769,
                                          "src": "30431:8:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$6322",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_Rounding_$6322",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        ],
                                        "id": 7783,
                                        "name": "unsignedRoundsUp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7930,
                                        "src": "30414:16:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6322_$returns$_t_bool_$",
                                          "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                        }
                                      },
                                      "id": 7785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "30414:26:23",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7790,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7788,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "3130",
                                          "id": 7786,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "30444:2:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10_by_1",
                                            "typeString": "int_const 10"
                                          },
                                          "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                          "id": 7787,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7775,
                                          "src": "30450:6:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "30444:12:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 7789,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7766,
                                        "src": "30459:5:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "30444:20:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "30414:50:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7781,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9696,
                                    "src": "30398:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 7782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "30407:6:23",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9695,
                                  "src": "30398:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 7792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30398:67:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "30389:76:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7773,
                            "id": 7794,
                            "nodeType": "Return",
                            "src": "30382:83:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7764,
                    "nodeType": "StructuredDocumentation",
                    "src": "30076:143:23",
                    "text": " @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."
                  },
                  "id": 7797,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log10",
                  "nameLocation": "30233:5:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7766,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "30247:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7797,
                        "src": "30239:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7765,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30239:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7769,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "30263:8:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7797,
                        "src": "30254:17:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$6322",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 7768,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7767,
                            "name": "Rounding",
                            "nameLocations": [
                              "30254:8:23"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6322,
                            "src": "30254:8:23"
                          },
                          "referencedDeclaration": 6322,
                          "src": "30254:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$6322",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30238:34:23"
                  },
                  "returnParameters": {
                    "id": 7773,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7772,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7797,
                        "src": "30296:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7771,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30296:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30295:9:23"
                  },
                  "scope": 7931,
                  "src": "30224:258:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7873,
                    "nodeType": "Block",
                    "src": "30800:675:23",
                    "statements": [
                      {
                        "expression": {
                          "id": 7814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7805,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7803,
                            "src": "30882:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7813,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7810,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7808,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7800,
                                    "src": "30902:1:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666666666666666666666666666666666666666666666666666666666666666",
                                    "id": 7809,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30906:34:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1",
                                      "typeString": "int_const 3402...(31 digits omitted)...1455"
                                    },
                                    "value": "0xffffffffffffffffffffffffffffffff"
                                  },
                                  "src": "30902:38:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7806,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "30886:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "30895:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "30886:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30886:55:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "37",
                              "id": 7812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "30945:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_7_by_1",
                                "typeString": "int_const 7"
                              },
                              "value": "7"
                            },
                            "src": "30886:60:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30882:64:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7815,
                        "nodeType": "ExpressionStatement",
                        "src": "30882:64:23"
                      },
                      {
                        "expression": {
                          "id": 7828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7816,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7803,
                            "src": "31022:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7824,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7821,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7819,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7800,
                                          "src": "31044:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 7820,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7803,
                                          "src": "31049:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "31044:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7822,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "31043:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866666666666666666666666666666666",
                                    "id": 7823,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31054:18:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_18446744073709551615_by_1",
                                      "typeString": "int_const 18446744073709551615"
                                    },
                                    "value": "0xffffffffffffffff"
                                  },
                                  "src": "31043:29:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7817,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "31027:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "31036:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "31027:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31027:46:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "36",
                              "id": 7826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31077:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_6_by_1",
                                "typeString": "int_const 6"
                              },
                              "value": "6"
                            },
                            "src": "31027:51:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31022:56:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7829,
                        "nodeType": "ExpressionStatement",
                        "src": "31022:56:23"
                      },
                      {
                        "expression": {
                          "id": 7842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7830,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7803,
                            "src": "31153:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7835,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7833,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7800,
                                          "src": "31175:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 7834,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7803,
                                          "src": "31180:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "31175:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7836,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "31174:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "30786666666666666666",
                                    "id": 7837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31185:10:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_4294967295_by_1",
                                      "typeString": "int_const 4294967295"
                                    },
                                    "value": "0xffffffff"
                                  },
                                  "src": "31174:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7831,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "31158:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "31167:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "31158:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31158:38:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "35",
                              "id": 7840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31200:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_5_by_1",
                                "typeString": "int_const 5"
                              },
                              "value": "5"
                            },
                            "src": "31158:43:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31153:48:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7843,
                        "nodeType": "ExpressionStatement",
                        "src": "31153:48:23"
                      },
                      {
                        "expression": {
                          "id": 7856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7844,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7803,
                            "src": "31276:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7855,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7849,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7847,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7800,
                                          "src": "31298:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">>",
                                        "rightExpression": {
                                          "id": 7848,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7803,
                                          "src": "31303:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "31298:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7850,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "31297:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "hexValue": "307866666666",
                                    "id": 7851,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31308:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_65535_by_1",
                                      "typeString": "int_const 65535"
                                    },
                                    "value": "0xffff"
                                  },
                                  "src": "31297:17:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 7845,
                                  "name": "SafeCast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9696,
                                  "src": "31281:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                    "typeString": "type(library SafeCast)"
                                  }
                                },
                                "id": 7846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "31290:6:23",
                                "memberName": "toUint",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 9695,
                                "src": "31281:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                  "typeString": "function (bool) pure returns (uint256)"
                                }
                              },
                              "id": 7853,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31281:34:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "hexValue": "34",
                              "id": 7854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "31319:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4_by_1",
                                "typeString": "int_const 4"
                              },
                              "value": "4"
                            },
                            "src": "31281:39:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31276:44:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7857,
                        "nodeType": "ExpressionStatement",
                        "src": "31276:44:23"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7858,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7803,
                                  "src": "31426:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "33",
                                  "id": 7859,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31431:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_3_by_1",
                                    "typeString": "int_const 3"
                                  },
                                  "value": "3"
                                },
                                "src": "31426:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7861,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "31425:8:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "|",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7866,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7864,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7800,
                                        "src": "31453:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "id": 7865,
                                        "name": "r",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7803,
                                        "src": "31458:1:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "31453:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7867,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "31452:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30786666",
                                  "id": 7868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31463:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_255_by_1",
                                    "typeString": "int_const 255"
                                  },
                                  "value": "0xff"
                                },
                                "src": "31452:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 7862,
                                "name": "SafeCast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9696,
                                "src": "31436:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                  "typeString": "type(library SafeCast)"
                                }
                              },
                              "id": 7863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "31445:6:23",
                              "memberName": "toUint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 9695,
                              "src": "31436:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (bool) pure returns (uint256)"
                              }
                            },
                            "id": 7870,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31436:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31425:43:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7804,
                        "id": 7872,
                        "nodeType": "Return",
                        "src": "31418:50:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7798,
                    "nodeType": "StructuredDocumentation",
                    "src": "30488:246:23",
                    "text": " @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."
                  },
                  "id": 7874,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log256",
                  "nameLocation": "30748:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7800,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "30763:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7874,
                        "src": "30755:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7799,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30755:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30754:11:23"
                  },
                  "returnParameters": {
                    "id": 7804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7803,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "30797:1:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7874,
                        "src": "30789:9:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7802,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30789:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30788:11:23"
                  },
                  "scope": 7931,
                  "src": "30739:736:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7910,
                    "nodeType": "Block",
                    "src": "31712:184:23",
                    "statements": [
                      {
                        "id": 7909,
                        "nodeType": "UncheckedBlock",
                        "src": "31722:168:23",
                        "statements": [
                          {
                            "assignments": [
                              7886
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7886,
                                "mutability": "mutable",
                                "name": "result",
                                "nameLocation": "31754:6:23",
                                "nodeType": "VariableDeclaration",
                                "scope": 7909,
                                "src": "31746:14:23",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7885,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "31746:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7890,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 7888,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7877,
                                  "src": "31770:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 7887,
                                "name": "log256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  7874,
                                  7911
                                ],
                                "referencedDeclaration": 7874,
                                "src": "31763:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31763:13:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "31746:30:23"
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7891,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7886,
                                "src": "31797:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 7905,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 7895,
                                          "name": "rounding",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7880,
                                          "src": "31839:8:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_Rounding_$6322",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_Rounding_$6322",
                                            "typeString": "enum Math.Rounding"
                                          }
                                        ],
                                        "id": 7894,
                                        "name": "unsignedRoundsUp",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7930,
                                        "src": "31822:16:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6322_$returns$_t_bool_$",
                                          "typeString": "function (enum Math.Rounding) pure returns (bool)"
                                        }
                                      },
                                      "id": 7896,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "31822:26:23",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7904,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7902,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 7897,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "31852:1:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7900,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7898,
                                                "name": "result",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7886,
                                                "src": "31858:6:23",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "<<",
                                              "rightExpression": {
                                                "hexValue": "33",
                                                "id": 7899,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "31868:1:23",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_3_by_1",
                                                  "typeString": "int_const 3"
                                                },
                                                "value": "3"
                                              },
                                              "src": "31858:11:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7901,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "31857:13:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "31852:18:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 7903,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7877,
                                        "src": "31873:5:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "31852:26:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "31822:56:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7892,
                                    "name": "SafeCast",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9696,
                                    "src": "31806:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                      "typeString": "type(library SafeCast)"
                                    }
                                  },
                                  "id": 7893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "31815:6:23",
                                  "memberName": "toUint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9695,
                                  "src": "31806:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (bool) pure returns (uint256)"
                                  }
                                },
                                "id": 7906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31806:73:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "31797:82:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 7884,
                            "id": 7908,
                            "nodeType": "Return",
                            "src": "31790:89:23"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7875,
                    "nodeType": "StructuredDocumentation",
                    "src": "31481:144:23",
                    "text": " @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."
                  },
                  "id": 7911,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log256",
                  "nameLocation": "31639:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7877,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "31654:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7911,
                        "src": "31646:13:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31646:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7880,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "31670:8:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7911,
                        "src": "31661:17:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$6322",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 7879,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7878,
                            "name": "Rounding",
                            "nameLocations": [
                              "31661:8:23"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6322,
                            "src": "31661:8:23"
                          },
                          "referencedDeclaration": 6322,
                          "src": "31661:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$6322",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31645:34:23"
                  },
                  "returnParameters": {
                    "id": 7884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7883,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7911,
                        "src": "31703:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7882,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31703:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31702:9:23"
                  },
                  "scope": 7931,
                  "src": "31630:266:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7929,
                    "nodeType": "Block",
                    "src": "32094:48:23",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 7927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 7925,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 7922,
                                  "name": "rounding",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7915,
                                  "src": "32117:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_Rounding_$6322",
                                    "typeString": "enum Math.Rounding"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_Rounding_$6322",
                                    "typeString": "enum Math.Rounding"
                                  }
                                ],
                                "id": 7921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "32111:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": {
                                  "id": 7920,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "32111:5:23",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 7923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32111:15:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 7924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "32129:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "32111:19:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 7926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32134:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "32111:24:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 7919,
                        "id": 7928,
                        "nodeType": "Return",
                        "src": "32104:31:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7912,
                    "nodeType": "StructuredDocumentation",
                    "src": "31902:113:23",
                    "text": " @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."
                  },
                  "id": 7930,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unsignedRoundsUp",
                  "nameLocation": "32029:16:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7915,
                        "mutability": "mutable",
                        "name": "rounding",
                        "nameLocation": "32055:8:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 7930,
                        "src": "32046:17:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Rounding_$6322",
                          "typeString": "enum Math.Rounding"
                        },
                        "typeName": {
                          "id": 7914,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7913,
                            "name": "Rounding",
                            "nameLocations": [
                              "32046:8:23"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6322,
                            "src": "32046:8:23"
                          },
                          "referencedDeclaration": 6322,
                          "src": "32046:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Rounding_$6322",
                            "typeString": "enum Math.Rounding"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32045:19:23"
                  },
                  "returnParameters": {
                    "id": 7919,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7918,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7930,
                        "src": "32088:4:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7917,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "32088:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32087:6:23"
                  },
                  "scope": 7931,
                  "src": "32020:122:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7932,
              "src": "281:31863:23",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "103:32042:23"
        },
        "id": 23
      },
      "@openzeppelin/contracts/utils/math/SafeCast.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
          "exportedSymbols": {
            "SafeCast": [
              9696
            ]
          },
          "id": 9697,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7933,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "192:24:24"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SafeCast",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 7934,
                "nodeType": "StructuredDocumentation",
                "src": "218:550:24",
                "text": " @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."
              },
              "fullyImplemented": true,
              "id": 9696,
              "linearizedBaseContracts": [
                9696
              ],
              "name": "SafeCast",
              "nameLocation": "777:8:24",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 7935,
                    "nodeType": "StructuredDocumentation",
                    "src": "792:68:24",
                    "text": " @dev Value doesn't fit in an uint of `bits` size."
                  },
                  "errorSelector": "6dfcc650",
                  "id": 7941,
                  "name": "SafeCastOverflowedUintDowncast",
                  "nameLocation": "871:30:24",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 7940,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7937,
                        "mutability": "mutable",
                        "name": "bits",
                        "nameLocation": "908:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 7941,
                        "src": "902:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 7936,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "902:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7939,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "922:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 7941,
                        "src": "914:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "914:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "901:27:24"
                  },
                  "src": "865:64:24"
                },
                {
                  "documentation": {
                    "id": 7942,
                    "nodeType": "StructuredDocumentation",
                    "src": "935:75:24",
                    "text": " @dev An int value doesn't fit in an uint of `bits` size."
                  },
                  "errorSelector": "a8ce4432",
                  "id": 7946,
                  "name": "SafeCastOverflowedIntToUint",
                  "nameLocation": "1021:27:24",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 7945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7944,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1056:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 7946,
                        "src": "1049:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7943,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1049:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1048:14:24"
                  },
                  "src": "1015:48:24"
                },
                {
                  "documentation": {
                    "id": 7947,
                    "nodeType": "StructuredDocumentation",
                    "src": "1069:67:24",
                    "text": " @dev Value doesn't fit in an int of `bits` size."
                  },
                  "errorSelector": "327269a7",
                  "id": 7953,
                  "name": "SafeCastOverflowedIntDowncast",
                  "nameLocation": "1147:29:24",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 7952,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7949,
                        "mutability": "mutable",
                        "name": "bits",
                        "nameLocation": "1183:4:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 7953,
                        "src": "1177:10:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 7948,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1177:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7951,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1196:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 7953,
                        "src": "1189:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 7950,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1189:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1176:26:24"
                  },
                  "src": "1141:62:24"
                },
                {
                  "documentation": {
                    "id": 7954,
                    "nodeType": "StructuredDocumentation",
                    "src": "1209:75:24",
                    "text": " @dev An uint value doesn't fit in an int of `bits` size."
                  },
                  "errorSelector": "24775e06",
                  "id": 7958,
                  "name": "SafeCastOverflowedUintToInt",
                  "nameLocation": "1295:27:24",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 7957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7956,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1331:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 7958,
                        "src": "1323:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1323:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1322:15:24"
                  },
                  "src": "1289:49:24"
                },
                {
                  "body": {
                    "id": 7985,
                    "nodeType": "Block",
                    "src": "1695:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7966,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7961,
                            "src": "1709:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7969,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1722:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint248_$",
                                    "typeString": "type(uint248)"
                                  },
                                  "typeName": {
                                    "id": 7968,
                                    "name": "uint248",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1722:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint248_$",
                                    "typeString": "type(uint248)"
                                  }
                                ],
                                "id": 7967,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "1717:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 7970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1717:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint248",
                                "typeString": "type(uint248)"
                              }
                            },
                            "id": 7971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "1731:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "1717:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint248",
                              "typeString": "uint248"
                            }
                          },
                          "src": "1709:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7979,
                        "nodeType": "IfStatement",
                        "src": "1705:105:24",
                        "trueBody": {
                          "id": 7978,
                          "nodeType": "Block",
                          "src": "1736:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323438",
                                    "id": 7974,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1788:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_248_by_1",
                                      "typeString": "int_const 248"
                                    },
                                    "value": "248"
                                  },
                                  {
                                    "id": 7975,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7961,
                                    "src": "1793:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_248_by_1",
                                      "typeString": "int_const 248"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7973,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "1757:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 7976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1757:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 7977,
                              "nodeType": "RevertStatement",
                              "src": "1750:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7982,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7961,
                              "src": "1834:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7981,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1826:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint248_$",
                              "typeString": "type(uint248)"
                            },
                            "typeName": {
                              "id": 7980,
                              "name": "uint248",
                              "nodeType": "ElementaryTypeName",
                              "src": "1826:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1826:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint248",
                            "typeString": "uint248"
                          }
                        },
                        "functionReturnParameters": 7965,
                        "id": 7984,
                        "nodeType": "Return",
                        "src": "1819:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7959,
                    "nodeType": "StructuredDocumentation",
                    "src": "1344:280:24",
                    "text": " @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"
                  },
                  "id": 7986,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint248",
                  "nameLocation": "1638:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7962,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7961,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "1656:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 7986,
                        "src": "1648:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7960,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1648:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1647:15:24"
                  },
                  "returnParameters": {
                    "id": 7965,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7964,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 7986,
                        "src": "1686:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint248",
                          "typeString": "uint248"
                        },
                        "typeName": {
                          "id": 7963,
                          "name": "uint248",
                          "nodeType": "ElementaryTypeName",
                          "src": "1686:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint248",
                            "typeString": "uint248"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1685:9:24"
                  },
                  "scope": 9696,
                  "src": "1629:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8013,
                    "nodeType": "Block",
                    "src": "2204:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7994,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7989,
                            "src": "2218:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7997,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2231:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint240_$",
                                    "typeString": "type(uint240)"
                                  },
                                  "typeName": {
                                    "id": 7996,
                                    "name": "uint240",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2231:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint240_$",
                                    "typeString": "type(uint240)"
                                  }
                                ],
                                "id": 7995,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "2226:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 7998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2226:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint240",
                                "typeString": "type(uint240)"
                              }
                            },
                            "id": 7999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2240:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "2226:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint240",
                              "typeString": "uint240"
                            }
                          },
                          "src": "2218:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8007,
                        "nodeType": "IfStatement",
                        "src": "2214:105:24",
                        "trueBody": {
                          "id": 8006,
                          "nodeType": "Block",
                          "src": "2245:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323430",
                                    "id": 8002,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2297:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_240_by_1",
                                      "typeString": "int_const 240"
                                    },
                                    "value": "240"
                                  },
                                  {
                                    "id": 8003,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7989,
                                    "src": "2302:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_240_by_1",
                                      "typeString": "int_const 240"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8001,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "2266:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2266:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8005,
                              "nodeType": "RevertStatement",
                              "src": "2259:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8010,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7989,
                              "src": "2343:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2335:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint240_$",
                              "typeString": "type(uint240)"
                            },
                            "typeName": {
                              "id": 8008,
                              "name": "uint240",
                              "nodeType": "ElementaryTypeName",
                              "src": "2335:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2335:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint240",
                            "typeString": "uint240"
                          }
                        },
                        "functionReturnParameters": 7993,
                        "id": 8012,
                        "nodeType": "Return",
                        "src": "2328:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7987,
                    "nodeType": "StructuredDocumentation",
                    "src": "1853:280:24",
                    "text": " @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"
                  },
                  "id": 8014,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint240",
                  "nameLocation": "2147:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7989,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2165:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8014,
                        "src": "2157:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7988,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2157:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2156:15:24"
                  },
                  "returnParameters": {
                    "id": 7993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7992,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8014,
                        "src": "2195:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint240",
                          "typeString": "uint240"
                        },
                        "typeName": {
                          "id": 7991,
                          "name": "uint240",
                          "nodeType": "ElementaryTypeName",
                          "src": "2195:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint240",
                            "typeString": "uint240"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2194:9:24"
                  },
                  "scope": 9696,
                  "src": "2138:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8041,
                    "nodeType": "Block",
                    "src": "2713:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8022,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8017,
                            "src": "2727:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8025,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2740:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint232_$",
                                    "typeString": "type(uint232)"
                                  },
                                  "typeName": {
                                    "id": 8024,
                                    "name": "uint232",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2740:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint232_$",
                                    "typeString": "type(uint232)"
                                  }
                                ],
                                "id": 8023,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "2735:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2735:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint232",
                                "typeString": "type(uint232)"
                              }
                            },
                            "id": 8027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2749:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "2735:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint232",
                              "typeString": "uint232"
                            }
                          },
                          "src": "2727:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8035,
                        "nodeType": "IfStatement",
                        "src": "2723:105:24",
                        "trueBody": {
                          "id": 8034,
                          "nodeType": "Block",
                          "src": "2754:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323332",
                                    "id": 8030,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2806:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_232_by_1",
                                      "typeString": "int_const 232"
                                    },
                                    "value": "232"
                                  },
                                  {
                                    "id": 8031,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8017,
                                    "src": "2811:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_232_by_1",
                                      "typeString": "int_const 232"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8029,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "2775:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8032,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2775:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8033,
                              "nodeType": "RevertStatement",
                              "src": "2768:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8038,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8017,
                              "src": "2852:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2844:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint232_$",
                              "typeString": "type(uint232)"
                            },
                            "typeName": {
                              "id": 8036,
                              "name": "uint232",
                              "nodeType": "ElementaryTypeName",
                              "src": "2844:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2844:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint232",
                            "typeString": "uint232"
                          }
                        },
                        "functionReturnParameters": 8021,
                        "id": 8040,
                        "nodeType": "Return",
                        "src": "2837:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8015,
                    "nodeType": "StructuredDocumentation",
                    "src": "2362:280:24",
                    "text": " @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"
                  },
                  "id": 8042,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint232",
                  "nameLocation": "2656:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8017,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2674:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8042,
                        "src": "2666:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8016,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2666:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2665:15:24"
                  },
                  "returnParameters": {
                    "id": 8021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8020,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8042,
                        "src": "2704:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint232",
                          "typeString": "uint232"
                        },
                        "typeName": {
                          "id": 8019,
                          "name": "uint232",
                          "nodeType": "ElementaryTypeName",
                          "src": "2704:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint232",
                            "typeString": "uint232"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2703:9:24"
                  },
                  "scope": 9696,
                  "src": "2647:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8069,
                    "nodeType": "Block",
                    "src": "3222:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8050,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8045,
                            "src": "3236:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3249:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint224_$",
                                    "typeString": "type(uint224)"
                                  },
                                  "typeName": {
                                    "id": 8052,
                                    "name": "uint224",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3249:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint224_$",
                                    "typeString": "type(uint224)"
                                  }
                                ],
                                "id": 8051,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "3244:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3244:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint224",
                                "typeString": "type(uint224)"
                              }
                            },
                            "id": 8055,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3258:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "3244:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "3236:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8063,
                        "nodeType": "IfStatement",
                        "src": "3232:105:24",
                        "trueBody": {
                          "id": 8062,
                          "nodeType": "Block",
                          "src": "3263:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323234",
                                    "id": 8058,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3315:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    "value": "224"
                                  },
                                  {
                                    "id": 8059,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8045,
                                    "src": "3320:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8057,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "3284:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8060,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3284:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8061,
                              "nodeType": "RevertStatement",
                              "src": "3277:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8066,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8045,
                              "src": "3361:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3353:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint224_$",
                              "typeString": "type(uint224)"
                            },
                            "typeName": {
                              "id": 8064,
                              "name": "uint224",
                              "nodeType": "ElementaryTypeName",
                              "src": "3353:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3353:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "functionReturnParameters": 8049,
                        "id": 8068,
                        "nodeType": "Return",
                        "src": "3346:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8043,
                    "nodeType": "StructuredDocumentation",
                    "src": "2871:280:24",
                    "text": " @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"
                  },
                  "id": 8070,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint224",
                  "nameLocation": "3165:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8046,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8045,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3183:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8070,
                        "src": "3175:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8044,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3175:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3174:15:24"
                  },
                  "returnParameters": {
                    "id": 8049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8048,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8070,
                        "src": "3213:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        },
                        "typeName": {
                          "id": 8047,
                          "name": "uint224",
                          "nodeType": "ElementaryTypeName",
                          "src": "3213:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3212:9:24"
                  },
                  "scope": 9696,
                  "src": "3156:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8097,
                    "nodeType": "Block",
                    "src": "3731:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8078,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8073,
                            "src": "3745:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3758:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint216_$",
                                    "typeString": "type(uint216)"
                                  },
                                  "typeName": {
                                    "id": 8080,
                                    "name": "uint216",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3758:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint216_$",
                                    "typeString": "type(uint216)"
                                  }
                                ],
                                "id": 8079,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "3753:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3753:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint216",
                                "typeString": "type(uint216)"
                              }
                            },
                            "id": 8083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "3767:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "3753:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint216",
                              "typeString": "uint216"
                            }
                          },
                          "src": "3745:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8091,
                        "nodeType": "IfStatement",
                        "src": "3741:105:24",
                        "trueBody": {
                          "id": 8090,
                          "nodeType": "Block",
                          "src": "3772:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323136",
                                    "id": 8086,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3824:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_216_by_1",
                                      "typeString": "int_const 216"
                                    },
                                    "value": "216"
                                  },
                                  {
                                    "id": 8087,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8073,
                                    "src": "3829:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_216_by_1",
                                      "typeString": "int_const 216"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8085,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "3793:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3793:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8089,
                              "nodeType": "RevertStatement",
                              "src": "3786:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8094,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8073,
                              "src": "3870:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3862:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint216_$",
                              "typeString": "type(uint216)"
                            },
                            "typeName": {
                              "id": 8092,
                              "name": "uint216",
                              "nodeType": "ElementaryTypeName",
                              "src": "3862:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3862:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint216",
                            "typeString": "uint216"
                          }
                        },
                        "functionReturnParameters": 8077,
                        "id": 8096,
                        "nodeType": "Return",
                        "src": "3855:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8071,
                    "nodeType": "StructuredDocumentation",
                    "src": "3380:280:24",
                    "text": " @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"
                  },
                  "id": 8098,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint216",
                  "nameLocation": "3674:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8073,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3692:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8098,
                        "src": "3684:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8072,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3684:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3683:15:24"
                  },
                  "returnParameters": {
                    "id": 8077,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8076,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8098,
                        "src": "3722:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint216",
                          "typeString": "uint216"
                        },
                        "typeName": {
                          "id": 8075,
                          "name": "uint216",
                          "nodeType": "ElementaryTypeName",
                          "src": "3722:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint216",
                            "typeString": "uint216"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3721:9:24"
                  },
                  "scope": 9696,
                  "src": "3665:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8125,
                    "nodeType": "Block",
                    "src": "4240:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8106,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8101,
                            "src": "4254:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8109,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4267:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint208_$",
                                    "typeString": "type(uint208)"
                                  },
                                  "typeName": {
                                    "id": 8108,
                                    "name": "uint208",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4267:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint208_$",
                                    "typeString": "type(uint208)"
                                  }
                                ],
                                "id": 8107,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "4262:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4262:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint208",
                                "typeString": "type(uint208)"
                              }
                            },
                            "id": 8111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4276:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "4262:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint208",
                              "typeString": "uint208"
                            }
                          },
                          "src": "4254:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8119,
                        "nodeType": "IfStatement",
                        "src": "4250:105:24",
                        "trueBody": {
                          "id": 8118,
                          "nodeType": "Block",
                          "src": "4281:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323038",
                                    "id": 8114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4333:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_208_by_1",
                                      "typeString": "int_const 208"
                                    },
                                    "value": "208"
                                  },
                                  {
                                    "id": 8115,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8101,
                                    "src": "4338:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_208_by_1",
                                      "typeString": "int_const 208"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8113,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "4302:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4302:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8117,
                              "nodeType": "RevertStatement",
                              "src": "4295:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8122,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8101,
                              "src": "4379:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4371:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint208_$",
                              "typeString": "type(uint208)"
                            },
                            "typeName": {
                              "id": 8120,
                              "name": "uint208",
                              "nodeType": "ElementaryTypeName",
                              "src": "4371:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4371:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint208",
                            "typeString": "uint208"
                          }
                        },
                        "functionReturnParameters": 8105,
                        "id": 8124,
                        "nodeType": "Return",
                        "src": "4364:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8099,
                    "nodeType": "StructuredDocumentation",
                    "src": "3889:280:24",
                    "text": " @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"
                  },
                  "id": 8126,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint208",
                  "nameLocation": "4183:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8101,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4201:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8126,
                        "src": "4193:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4193:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4192:15:24"
                  },
                  "returnParameters": {
                    "id": 8105,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8104,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8126,
                        "src": "4231:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint208",
                          "typeString": "uint208"
                        },
                        "typeName": {
                          "id": 8103,
                          "name": "uint208",
                          "nodeType": "ElementaryTypeName",
                          "src": "4231:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint208",
                            "typeString": "uint208"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4230:9:24"
                  },
                  "scope": 9696,
                  "src": "4174:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8153,
                    "nodeType": "Block",
                    "src": "4749:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8134,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8129,
                            "src": "4763:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8137,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4776:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint200_$",
                                    "typeString": "type(uint200)"
                                  },
                                  "typeName": {
                                    "id": 8136,
                                    "name": "uint200",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4776:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint200_$",
                                    "typeString": "type(uint200)"
                                  }
                                ],
                                "id": 8135,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "4771:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4771:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint200",
                                "typeString": "type(uint200)"
                              }
                            },
                            "id": 8139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4785:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "4771:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint200",
                              "typeString": "uint200"
                            }
                          },
                          "src": "4763:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8147,
                        "nodeType": "IfStatement",
                        "src": "4759:105:24",
                        "trueBody": {
                          "id": 8146,
                          "nodeType": "Block",
                          "src": "4790:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323030",
                                    "id": 8142,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4842:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_200_by_1",
                                      "typeString": "int_const 200"
                                    },
                                    "value": "200"
                                  },
                                  {
                                    "id": 8143,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8129,
                                    "src": "4847:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_200_by_1",
                                      "typeString": "int_const 200"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8141,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "4811:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4811:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8145,
                              "nodeType": "RevertStatement",
                              "src": "4804:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8150,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8129,
                              "src": "4888:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4880:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint200_$",
                              "typeString": "type(uint200)"
                            },
                            "typeName": {
                              "id": 8148,
                              "name": "uint200",
                              "nodeType": "ElementaryTypeName",
                              "src": "4880:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4880:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint200",
                            "typeString": "uint200"
                          }
                        },
                        "functionReturnParameters": 8133,
                        "id": 8152,
                        "nodeType": "Return",
                        "src": "4873:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8127,
                    "nodeType": "StructuredDocumentation",
                    "src": "4398:280:24",
                    "text": " @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"
                  },
                  "id": 8154,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint200",
                  "nameLocation": "4692:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8129,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "4710:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8154,
                        "src": "4702:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8128,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4702:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4701:15:24"
                  },
                  "returnParameters": {
                    "id": 8133,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8132,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8154,
                        "src": "4740:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint200",
                          "typeString": "uint200"
                        },
                        "typeName": {
                          "id": 8131,
                          "name": "uint200",
                          "nodeType": "ElementaryTypeName",
                          "src": "4740:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint200",
                            "typeString": "uint200"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4739:9:24"
                  },
                  "scope": 9696,
                  "src": "4683:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8181,
                    "nodeType": "Block",
                    "src": "5258:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8162,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8157,
                            "src": "5272:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8165,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5285:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint192_$",
                                    "typeString": "type(uint192)"
                                  },
                                  "typeName": {
                                    "id": 8164,
                                    "name": "uint192",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5285:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint192_$",
                                    "typeString": "type(uint192)"
                                  }
                                ],
                                "id": 8163,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "5280:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5280:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint192",
                                "typeString": "type(uint192)"
                              }
                            },
                            "id": 8167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "5294:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "5280:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint192",
                              "typeString": "uint192"
                            }
                          },
                          "src": "5272:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8175,
                        "nodeType": "IfStatement",
                        "src": "5268:105:24",
                        "trueBody": {
                          "id": 8174,
                          "nodeType": "Block",
                          "src": "5299:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313932",
                                    "id": 8170,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5351:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    "value": "192"
                                  },
                                  {
                                    "id": 8171,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8157,
                                    "src": "5356:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8169,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "5320:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5320:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8173,
                              "nodeType": "RevertStatement",
                              "src": "5313:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8178,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8157,
                              "src": "5397:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5389:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint192_$",
                              "typeString": "type(uint192)"
                            },
                            "typeName": {
                              "id": 8176,
                              "name": "uint192",
                              "nodeType": "ElementaryTypeName",
                              "src": "5389:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5389:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint192",
                            "typeString": "uint192"
                          }
                        },
                        "functionReturnParameters": 8161,
                        "id": 8180,
                        "nodeType": "Return",
                        "src": "5382:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8155,
                    "nodeType": "StructuredDocumentation",
                    "src": "4907:280:24",
                    "text": " @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"
                  },
                  "id": 8182,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint192",
                  "nameLocation": "5201:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8157,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5219:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8182,
                        "src": "5211:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8156,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5211:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5210:15:24"
                  },
                  "returnParameters": {
                    "id": 8161,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8160,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8182,
                        "src": "5249:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint192",
                          "typeString": "uint192"
                        },
                        "typeName": {
                          "id": 8159,
                          "name": "uint192",
                          "nodeType": "ElementaryTypeName",
                          "src": "5249:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint192",
                            "typeString": "uint192"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5248:9:24"
                  },
                  "scope": 9696,
                  "src": "5192:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8209,
                    "nodeType": "Block",
                    "src": "5767:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8190,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8185,
                            "src": "5781:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5794:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint184_$",
                                    "typeString": "type(uint184)"
                                  },
                                  "typeName": {
                                    "id": 8192,
                                    "name": "uint184",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5794:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint184_$",
                                    "typeString": "type(uint184)"
                                  }
                                ],
                                "id": 8191,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "5789:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8194,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5789:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint184",
                                "typeString": "type(uint184)"
                              }
                            },
                            "id": 8195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "5803:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "5789:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint184",
                              "typeString": "uint184"
                            }
                          },
                          "src": "5781:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8203,
                        "nodeType": "IfStatement",
                        "src": "5777:105:24",
                        "trueBody": {
                          "id": 8202,
                          "nodeType": "Block",
                          "src": "5808:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313834",
                                    "id": 8198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5860:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_184_by_1",
                                      "typeString": "int_const 184"
                                    },
                                    "value": "184"
                                  },
                                  {
                                    "id": 8199,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8185,
                                    "src": "5865:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_184_by_1",
                                      "typeString": "int_const 184"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8197,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "5829:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5829:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8201,
                              "nodeType": "RevertStatement",
                              "src": "5822:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8206,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8185,
                              "src": "5906:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5898:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint184_$",
                              "typeString": "type(uint184)"
                            },
                            "typeName": {
                              "id": 8204,
                              "name": "uint184",
                              "nodeType": "ElementaryTypeName",
                              "src": "5898:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5898:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint184",
                            "typeString": "uint184"
                          }
                        },
                        "functionReturnParameters": 8189,
                        "id": 8208,
                        "nodeType": "Return",
                        "src": "5891:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8183,
                    "nodeType": "StructuredDocumentation",
                    "src": "5416:280:24",
                    "text": " @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"
                  },
                  "id": 8210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint184",
                  "nameLocation": "5710:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8186,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8185,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5728:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "5720:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5720:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5719:15:24"
                  },
                  "returnParameters": {
                    "id": 8189,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8188,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8210,
                        "src": "5758:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint184",
                          "typeString": "uint184"
                        },
                        "typeName": {
                          "id": 8187,
                          "name": "uint184",
                          "nodeType": "ElementaryTypeName",
                          "src": "5758:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint184",
                            "typeString": "uint184"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5757:9:24"
                  },
                  "scope": 9696,
                  "src": "5701:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8237,
                    "nodeType": "Block",
                    "src": "6276:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8218,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8213,
                            "src": "6290:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8221,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6303:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint176_$",
                                    "typeString": "type(uint176)"
                                  },
                                  "typeName": {
                                    "id": 8220,
                                    "name": "uint176",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6303:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint176_$",
                                    "typeString": "type(uint176)"
                                  }
                                ],
                                "id": 8219,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "6298:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6298:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint176",
                                "typeString": "type(uint176)"
                              }
                            },
                            "id": 8223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "6312:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "6298:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint176",
                              "typeString": "uint176"
                            }
                          },
                          "src": "6290:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8231,
                        "nodeType": "IfStatement",
                        "src": "6286:105:24",
                        "trueBody": {
                          "id": 8230,
                          "nodeType": "Block",
                          "src": "6317:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313736",
                                    "id": 8226,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6369:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_176_by_1",
                                      "typeString": "int_const 176"
                                    },
                                    "value": "176"
                                  },
                                  {
                                    "id": 8227,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8213,
                                    "src": "6374:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_176_by_1",
                                      "typeString": "int_const 176"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8225,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "6338:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6338:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8229,
                              "nodeType": "RevertStatement",
                              "src": "6331:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8234,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8213,
                              "src": "6415:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6407:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint176_$",
                              "typeString": "type(uint176)"
                            },
                            "typeName": {
                              "id": 8232,
                              "name": "uint176",
                              "nodeType": "ElementaryTypeName",
                              "src": "6407:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6407:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint176",
                            "typeString": "uint176"
                          }
                        },
                        "functionReturnParameters": 8217,
                        "id": 8236,
                        "nodeType": "Return",
                        "src": "6400:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8211,
                    "nodeType": "StructuredDocumentation",
                    "src": "5925:280:24",
                    "text": " @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"
                  },
                  "id": 8238,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint176",
                  "nameLocation": "6219:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8213,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "6237:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8238,
                        "src": "6229:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6229:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6228:15:24"
                  },
                  "returnParameters": {
                    "id": 8217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8216,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8238,
                        "src": "6267:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint176",
                          "typeString": "uint176"
                        },
                        "typeName": {
                          "id": 8215,
                          "name": "uint176",
                          "nodeType": "ElementaryTypeName",
                          "src": "6267:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint176",
                            "typeString": "uint176"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6266:9:24"
                  },
                  "scope": 9696,
                  "src": "6210:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8265,
                    "nodeType": "Block",
                    "src": "6785:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8246,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8241,
                            "src": "6799:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8249,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6812:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint168_$",
                                    "typeString": "type(uint168)"
                                  },
                                  "typeName": {
                                    "id": 8248,
                                    "name": "uint168",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6812:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint168_$",
                                    "typeString": "type(uint168)"
                                  }
                                ],
                                "id": 8247,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "6807:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6807:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint168",
                                "typeString": "type(uint168)"
                              }
                            },
                            "id": 8251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "6821:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "6807:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint168",
                              "typeString": "uint168"
                            }
                          },
                          "src": "6799:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8259,
                        "nodeType": "IfStatement",
                        "src": "6795:105:24",
                        "trueBody": {
                          "id": 8258,
                          "nodeType": "Block",
                          "src": "6826:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313638",
                                    "id": 8254,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6878:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_168_by_1",
                                      "typeString": "int_const 168"
                                    },
                                    "value": "168"
                                  },
                                  {
                                    "id": 8255,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8241,
                                    "src": "6883:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_168_by_1",
                                      "typeString": "int_const 168"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8253,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "6847:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6847:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8257,
                              "nodeType": "RevertStatement",
                              "src": "6840:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8262,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8241,
                              "src": "6924:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6916:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint168_$",
                              "typeString": "type(uint168)"
                            },
                            "typeName": {
                              "id": 8260,
                              "name": "uint168",
                              "nodeType": "ElementaryTypeName",
                              "src": "6916:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6916:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint168",
                            "typeString": "uint168"
                          }
                        },
                        "functionReturnParameters": 8245,
                        "id": 8264,
                        "nodeType": "Return",
                        "src": "6909:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8239,
                    "nodeType": "StructuredDocumentation",
                    "src": "6434:280:24",
                    "text": " @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"
                  },
                  "id": 8266,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint168",
                  "nameLocation": "6728:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8241,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "6746:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8266,
                        "src": "6738:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8240,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6738:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6737:15:24"
                  },
                  "returnParameters": {
                    "id": 8245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8244,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8266,
                        "src": "6776:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint168",
                          "typeString": "uint168"
                        },
                        "typeName": {
                          "id": 8243,
                          "name": "uint168",
                          "nodeType": "ElementaryTypeName",
                          "src": "6776:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint168",
                            "typeString": "uint168"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6775:9:24"
                  },
                  "scope": 9696,
                  "src": "6719:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8293,
                    "nodeType": "Block",
                    "src": "7294:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8274,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8269,
                            "src": "7308:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7321:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 8276,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7321:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  }
                                ],
                                "id": 8275,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "7316:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7316:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint160",
                                "typeString": "type(uint160)"
                              }
                            },
                            "id": 8279,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7330:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "7316:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "7308:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8287,
                        "nodeType": "IfStatement",
                        "src": "7304:105:24",
                        "trueBody": {
                          "id": 8286,
                          "nodeType": "Block",
                          "src": "7335:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313630",
                                    "id": 8282,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7387:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_160_by_1",
                                      "typeString": "int_const 160"
                                    },
                                    "value": "160"
                                  },
                                  {
                                    "id": 8283,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8269,
                                    "src": "7392:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_160_by_1",
                                      "typeString": "int_const 160"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8281,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "7356:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8284,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7356:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8285,
                              "nodeType": "RevertStatement",
                              "src": "7349:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8290,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8269,
                              "src": "7433:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8289,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7425:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint160_$",
                              "typeString": "type(uint160)"
                            },
                            "typeName": {
                              "id": 8288,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "7425:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7425:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "functionReturnParameters": 8273,
                        "id": 8292,
                        "nodeType": "Return",
                        "src": "7418:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8267,
                    "nodeType": "StructuredDocumentation",
                    "src": "6943:280:24",
                    "text": " @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"
                  },
                  "id": 8294,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint160",
                  "nameLocation": "7237:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8269,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "7255:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8294,
                        "src": "7247:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8268,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7247:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7246:15:24"
                  },
                  "returnParameters": {
                    "id": 8273,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8272,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8294,
                        "src": "7285:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 8271,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "7285:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7284:9:24"
                  },
                  "scope": 9696,
                  "src": "7228:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8321,
                    "nodeType": "Block",
                    "src": "7803:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8302,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8297,
                            "src": "7817:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7830:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint152_$",
                                    "typeString": "type(uint152)"
                                  },
                                  "typeName": {
                                    "id": 8304,
                                    "name": "uint152",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7830:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint152_$",
                                    "typeString": "type(uint152)"
                                  }
                                ],
                                "id": 8303,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "7825:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7825:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint152",
                                "typeString": "type(uint152)"
                              }
                            },
                            "id": 8307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "7839:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "7825:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint152",
                              "typeString": "uint152"
                            }
                          },
                          "src": "7817:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8315,
                        "nodeType": "IfStatement",
                        "src": "7813:105:24",
                        "trueBody": {
                          "id": 8314,
                          "nodeType": "Block",
                          "src": "7844:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313532",
                                    "id": 8310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7896:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_152_by_1",
                                      "typeString": "int_const 152"
                                    },
                                    "value": "152"
                                  },
                                  {
                                    "id": 8311,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8297,
                                    "src": "7901:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_152_by_1",
                                      "typeString": "int_const 152"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8309,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "7865:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7865:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8313,
                              "nodeType": "RevertStatement",
                              "src": "7858:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8318,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8297,
                              "src": "7942:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7934:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint152_$",
                              "typeString": "type(uint152)"
                            },
                            "typeName": {
                              "id": 8316,
                              "name": "uint152",
                              "nodeType": "ElementaryTypeName",
                              "src": "7934:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7934:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint152",
                            "typeString": "uint152"
                          }
                        },
                        "functionReturnParameters": 8301,
                        "id": 8320,
                        "nodeType": "Return",
                        "src": "7927:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8295,
                    "nodeType": "StructuredDocumentation",
                    "src": "7452:280:24",
                    "text": " @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"
                  },
                  "id": 8322,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint152",
                  "nameLocation": "7746:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8297,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "7764:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8322,
                        "src": "7756:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8296,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7756:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7755:15:24"
                  },
                  "returnParameters": {
                    "id": 8301,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8300,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8322,
                        "src": "7794:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint152",
                          "typeString": "uint152"
                        },
                        "typeName": {
                          "id": 8299,
                          "name": "uint152",
                          "nodeType": "ElementaryTypeName",
                          "src": "7794:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint152",
                            "typeString": "uint152"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7793:9:24"
                  },
                  "scope": 9696,
                  "src": "7737:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8349,
                    "nodeType": "Block",
                    "src": "8312:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8330,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8325,
                            "src": "8326:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8333,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8339:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint144_$",
                                    "typeString": "type(uint144)"
                                  },
                                  "typeName": {
                                    "id": 8332,
                                    "name": "uint144",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8339:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint144_$",
                                    "typeString": "type(uint144)"
                                  }
                                ],
                                "id": 8331,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "8334:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8334:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint144",
                                "typeString": "type(uint144)"
                              }
                            },
                            "id": 8335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8348:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "8334:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint144",
                              "typeString": "uint144"
                            }
                          },
                          "src": "8326:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8343,
                        "nodeType": "IfStatement",
                        "src": "8322:105:24",
                        "trueBody": {
                          "id": 8342,
                          "nodeType": "Block",
                          "src": "8353:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313434",
                                    "id": 8338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8405:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_144_by_1",
                                      "typeString": "int_const 144"
                                    },
                                    "value": "144"
                                  },
                                  {
                                    "id": 8339,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8325,
                                    "src": "8410:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_144_by_1",
                                      "typeString": "int_const 144"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8337,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "8374:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8374:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8341,
                              "nodeType": "RevertStatement",
                              "src": "8367:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8346,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8325,
                              "src": "8451:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8443:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint144_$",
                              "typeString": "type(uint144)"
                            },
                            "typeName": {
                              "id": 8344,
                              "name": "uint144",
                              "nodeType": "ElementaryTypeName",
                              "src": "8443:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8443:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "functionReturnParameters": 8329,
                        "id": 8348,
                        "nodeType": "Return",
                        "src": "8436:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8323,
                    "nodeType": "StructuredDocumentation",
                    "src": "7961:280:24",
                    "text": " @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"
                  },
                  "id": 8350,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint144",
                  "nameLocation": "8255:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8325,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "8273:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8350,
                        "src": "8265:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8265:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8264:15:24"
                  },
                  "returnParameters": {
                    "id": 8329,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8328,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8350,
                        "src": "8303:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        },
                        "typeName": {
                          "id": 8327,
                          "name": "uint144",
                          "nodeType": "ElementaryTypeName",
                          "src": "8303:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint144",
                            "typeString": "uint144"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8302:9:24"
                  },
                  "scope": 9696,
                  "src": "8246:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8377,
                    "nodeType": "Block",
                    "src": "8821:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8358,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8353,
                            "src": "8835:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8361,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8848:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint136_$",
                                    "typeString": "type(uint136)"
                                  },
                                  "typeName": {
                                    "id": 8360,
                                    "name": "uint136",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8848:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint136_$",
                                    "typeString": "type(uint136)"
                                  }
                                ],
                                "id": 8359,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "8843:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8843:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint136",
                                "typeString": "type(uint136)"
                              }
                            },
                            "id": 8363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "8857:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "8843:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint136",
                              "typeString": "uint136"
                            }
                          },
                          "src": "8835:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8371,
                        "nodeType": "IfStatement",
                        "src": "8831:105:24",
                        "trueBody": {
                          "id": 8370,
                          "nodeType": "Block",
                          "src": "8862:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313336",
                                    "id": 8366,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8914:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_136_by_1",
                                      "typeString": "int_const 136"
                                    },
                                    "value": "136"
                                  },
                                  {
                                    "id": 8367,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8353,
                                    "src": "8919:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_136_by_1",
                                      "typeString": "int_const 136"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8365,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "8883:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8883:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8369,
                              "nodeType": "RevertStatement",
                              "src": "8876:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8374,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8353,
                              "src": "8960:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8373,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8952:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint136_$",
                              "typeString": "type(uint136)"
                            },
                            "typeName": {
                              "id": 8372,
                              "name": "uint136",
                              "nodeType": "ElementaryTypeName",
                              "src": "8952:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8952:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint136",
                            "typeString": "uint136"
                          }
                        },
                        "functionReturnParameters": 8357,
                        "id": 8376,
                        "nodeType": "Return",
                        "src": "8945:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8351,
                    "nodeType": "StructuredDocumentation",
                    "src": "8470:280:24",
                    "text": " @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"
                  },
                  "id": 8378,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint136",
                  "nameLocation": "8764:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8353,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "8782:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8378,
                        "src": "8774:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8352,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8774:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8773:15:24"
                  },
                  "returnParameters": {
                    "id": 8357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8356,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8378,
                        "src": "8812:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint136",
                          "typeString": "uint136"
                        },
                        "typeName": {
                          "id": 8355,
                          "name": "uint136",
                          "nodeType": "ElementaryTypeName",
                          "src": "8812:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint136",
                            "typeString": "uint136"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8811:9:24"
                  },
                  "scope": 9696,
                  "src": "8755:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8405,
                    "nodeType": "Block",
                    "src": "9330:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8386,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8381,
                            "src": "9344:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9357:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 8388,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9357:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  }
                                ],
                                "id": 8387,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "9352:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8390,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9352:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint128",
                                "typeString": "type(uint128)"
                              }
                            },
                            "id": 8391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "9366:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "9352:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "9344:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8399,
                        "nodeType": "IfStatement",
                        "src": "9340:105:24",
                        "trueBody": {
                          "id": 8398,
                          "nodeType": "Block",
                          "src": "9371:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313238",
                                    "id": 8394,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9423:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  {
                                    "id": 8395,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8381,
                                    "src": "9428:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8393,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "9392:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9392:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8397,
                              "nodeType": "RevertStatement",
                              "src": "9385:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8402,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8381,
                              "src": "9469:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9461:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint128_$",
                              "typeString": "type(uint128)"
                            },
                            "typeName": {
                              "id": 8400,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "9461:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9461:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "functionReturnParameters": 8385,
                        "id": 8404,
                        "nodeType": "Return",
                        "src": "9454:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8379,
                    "nodeType": "StructuredDocumentation",
                    "src": "8979:280:24",
                    "text": " @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"
                  },
                  "id": 8406,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint128",
                  "nameLocation": "9273:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8382,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8381,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9291:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8406,
                        "src": "9283:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8380,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9283:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9282:15:24"
                  },
                  "returnParameters": {
                    "id": 8385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8384,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8406,
                        "src": "9321:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 8383,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "9321:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9320:9:24"
                  },
                  "scope": 9696,
                  "src": "9264:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8433,
                    "nodeType": "Block",
                    "src": "9839:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8414,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8409,
                            "src": "9853:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8417,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9866:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 8416,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9866:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  }
                                ],
                                "id": 8415,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "9861:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9861:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint120",
                                "typeString": "type(uint120)"
                              }
                            },
                            "id": 8419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "9875:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "9861:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint120",
                              "typeString": "uint120"
                            }
                          },
                          "src": "9853:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8427,
                        "nodeType": "IfStatement",
                        "src": "9849:105:24",
                        "trueBody": {
                          "id": 8426,
                          "nodeType": "Block",
                          "src": "9880:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313230",
                                    "id": 8422,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9932:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_120_by_1",
                                      "typeString": "int_const 120"
                                    },
                                    "value": "120"
                                  },
                                  {
                                    "id": 8423,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8409,
                                    "src": "9937:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_120_by_1",
                                      "typeString": "int_const 120"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8421,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "9901:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9901:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8425,
                              "nodeType": "RevertStatement",
                              "src": "9894:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8430,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8409,
                              "src": "9978:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8429,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9970:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint120_$",
                              "typeString": "type(uint120)"
                            },
                            "typeName": {
                              "id": 8428,
                              "name": "uint120",
                              "nodeType": "ElementaryTypeName",
                              "src": "9970:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9970:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "functionReturnParameters": 8413,
                        "id": 8432,
                        "nodeType": "Return",
                        "src": "9963:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8407,
                    "nodeType": "StructuredDocumentation",
                    "src": "9488:280:24",
                    "text": " @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"
                  },
                  "id": 8434,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint120",
                  "nameLocation": "9782:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8409,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "9800:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8434,
                        "src": "9792:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8408,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9792:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9791:15:24"
                  },
                  "returnParameters": {
                    "id": 8413,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8412,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8434,
                        "src": "9830:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint120",
                          "typeString": "uint120"
                        },
                        "typeName": {
                          "id": 8411,
                          "name": "uint120",
                          "nodeType": "ElementaryTypeName",
                          "src": "9830:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9829:9:24"
                  },
                  "scope": 9696,
                  "src": "9773:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8461,
                    "nodeType": "Block",
                    "src": "10348:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8442,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8437,
                            "src": "10362:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8445,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10375:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint112_$",
                                    "typeString": "type(uint112)"
                                  },
                                  "typeName": {
                                    "id": 8444,
                                    "name": "uint112",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10375:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint112_$",
                                    "typeString": "type(uint112)"
                                  }
                                ],
                                "id": 8443,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "10370:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10370:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint112",
                                "typeString": "type(uint112)"
                              }
                            },
                            "id": 8447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "10384:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "10370:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "10362:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8455,
                        "nodeType": "IfStatement",
                        "src": "10358:105:24",
                        "trueBody": {
                          "id": 8454,
                          "nodeType": "Block",
                          "src": "10389:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313132",
                                    "id": 8450,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10441:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_112_by_1",
                                      "typeString": "int_const 112"
                                    },
                                    "value": "112"
                                  },
                                  {
                                    "id": 8451,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8437,
                                    "src": "10446:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_112_by_1",
                                      "typeString": "int_const 112"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8449,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "10410:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10410:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8453,
                              "nodeType": "RevertStatement",
                              "src": "10403:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8458,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8437,
                              "src": "10487:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10479:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint112_$",
                              "typeString": "type(uint112)"
                            },
                            "typeName": {
                              "id": 8456,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "10479:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10479:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "functionReturnParameters": 8441,
                        "id": 8460,
                        "nodeType": "Return",
                        "src": "10472:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8435,
                    "nodeType": "StructuredDocumentation",
                    "src": "9997:280:24",
                    "text": " @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"
                  },
                  "id": 8462,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint112",
                  "nameLocation": "10291:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8437,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "10309:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8462,
                        "src": "10301:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8436,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10301:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10300:15:24"
                  },
                  "returnParameters": {
                    "id": 8441,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8440,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8462,
                        "src": "10339:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 8439,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "10339:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10338:9:24"
                  },
                  "scope": 9696,
                  "src": "10282:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8489,
                    "nodeType": "Block",
                    "src": "10857:152:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8470,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8465,
                            "src": "10871:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8473,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10884:7:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint104_$",
                                    "typeString": "type(uint104)"
                                  },
                                  "typeName": {
                                    "id": 8472,
                                    "name": "uint104",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10884:7:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint104_$",
                                    "typeString": "type(uint104)"
                                  }
                                ],
                                "id": 8471,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "10879:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10879:13:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint104",
                                "typeString": "type(uint104)"
                              }
                            },
                            "id": 8475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "10893:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "10879:17:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint104",
                              "typeString": "uint104"
                            }
                          },
                          "src": "10871:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8483,
                        "nodeType": "IfStatement",
                        "src": "10867:105:24",
                        "trueBody": {
                          "id": 8482,
                          "nodeType": "Block",
                          "src": "10898:74:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313034",
                                    "id": 8478,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10950:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_104_by_1",
                                      "typeString": "int_const 104"
                                    },
                                    "value": "104"
                                  },
                                  {
                                    "id": 8479,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8465,
                                    "src": "10955:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_104_by_1",
                                      "typeString": "int_const 104"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8477,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "10919:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10919:42:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8481,
                              "nodeType": "RevertStatement",
                              "src": "10912:49:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8486,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8465,
                              "src": "10996:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10988:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint104_$",
                              "typeString": "type(uint104)"
                            },
                            "typeName": {
                              "id": 8484,
                              "name": "uint104",
                              "nodeType": "ElementaryTypeName",
                              "src": "10988:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10988:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint104",
                            "typeString": "uint104"
                          }
                        },
                        "functionReturnParameters": 8469,
                        "id": 8488,
                        "nodeType": "Return",
                        "src": "10981:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8463,
                    "nodeType": "StructuredDocumentation",
                    "src": "10506:280:24",
                    "text": " @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"
                  },
                  "id": 8490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint104",
                  "nameLocation": "10800:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8465,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "10818:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8490,
                        "src": "10810:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8464,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10810:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10809:15:24"
                  },
                  "returnParameters": {
                    "id": 8469,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8468,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8490,
                        "src": "10848:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint104",
                          "typeString": "uint104"
                        },
                        "typeName": {
                          "id": 8467,
                          "name": "uint104",
                          "nodeType": "ElementaryTypeName",
                          "src": "10848:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint104",
                            "typeString": "uint104"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10847:9:24"
                  },
                  "scope": 9696,
                  "src": "10791:218:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8517,
                    "nodeType": "Block",
                    "src": "11360:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8498,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8493,
                            "src": "11374:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11387:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint96_$",
                                    "typeString": "type(uint96)"
                                  },
                                  "typeName": {
                                    "id": 8500,
                                    "name": "uint96",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11387:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint96_$",
                                    "typeString": "type(uint96)"
                                  }
                                ],
                                "id": 8499,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "11382:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11382:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint96",
                                "typeString": "type(uint96)"
                              }
                            },
                            "id": 8503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "11395:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "11382:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "11374:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8511,
                        "nodeType": "IfStatement",
                        "src": "11370:103:24",
                        "trueBody": {
                          "id": 8510,
                          "nodeType": "Block",
                          "src": "11400:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3936",
                                    "id": 8506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11452:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    "value": "96"
                                  },
                                  {
                                    "id": 8507,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8493,
                                    "src": "11456:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8505,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "11421:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11421:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8509,
                              "nodeType": "RevertStatement",
                              "src": "11414:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8514,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8493,
                              "src": "11496:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11489:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint96_$",
                              "typeString": "type(uint96)"
                            },
                            "typeName": {
                              "id": 8512,
                              "name": "uint96",
                              "nodeType": "ElementaryTypeName",
                              "src": "11489:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11489:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "functionReturnParameters": 8497,
                        "id": 8516,
                        "nodeType": "Return",
                        "src": "11482:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8491,
                    "nodeType": "StructuredDocumentation",
                    "src": "11015:276:24",
                    "text": " @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"
                  },
                  "id": 8518,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint96",
                  "nameLocation": "11305:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8493,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "11322:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8518,
                        "src": "11314:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8492,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11314:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11313:15:24"
                  },
                  "returnParameters": {
                    "id": 8497,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8496,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8518,
                        "src": "11352:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 8495,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "11352:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11351:8:24"
                  },
                  "scope": 9696,
                  "src": "11296:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8545,
                    "nodeType": "Block",
                    "src": "11860:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8526,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8521,
                            "src": "11874:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8529,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11887:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint88_$",
                                    "typeString": "type(uint88)"
                                  },
                                  "typeName": {
                                    "id": 8528,
                                    "name": "uint88",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11887:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint88_$",
                                    "typeString": "type(uint88)"
                                  }
                                ],
                                "id": 8527,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "11882:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11882:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint88",
                                "typeString": "type(uint88)"
                              }
                            },
                            "id": 8531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "11895:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "11882:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint88",
                              "typeString": "uint88"
                            }
                          },
                          "src": "11874:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8539,
                        "nodeType": "IfStatement",
                        "src": "11870:103:24",
                        "trueBody": {
                          "id": 8538,
                          "nodeType": "Block",
                          "src": "11900:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3838",
                                    "id": 8534,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11952:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_88_by_1",
                                      "typeString": "int_const 88"
                                    },
                                    "value": "88"
                                  },
                                  {
                                    "id": 8535,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8521,
                                    "src": "11956:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_88_by_1",
                                      "typeString": "int_const 88"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8533,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "11921:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11921:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8537,
                              "nodeType": "RevertStatement",
                              "src": "11914:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8542,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8521,
                              "src": "11996:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11989:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint88_$",
                              "typeString": "type(uint88)"
                            },
                            "typeName": {
                              "id": 8540,
                              "name": "uint88",
                              "nodeType": "ElementaryTypeName",
                              "src": "11989:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11989:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "functionReturnParameters": 8525,
                        "id": 8544,
                        "nodeType": "Return",
                        "src": "11982:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8519,
                    "nodeType": "StructuredDocumentation",
                    "src": "11515:276:24",
                    "text": " @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"
                  },
                  "id": 8546,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint88",
                  "nameLocation": "11805:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8522,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8521,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "11822:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8546,
                        "src": "11814:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8520,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11814:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11813:15:24"
                  },
                  "returnParameters": {
                    "id": 8525,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8524,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8546,
                        "src": "11852:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint88",
                          "typeString": "uint88"
                        },
                        "typeName": {
                          "id": 8523,
                          "name": "uint88",
                          "nodeType": "ElementaryTypeName",
                          "src": "11852:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint88",
                            "typeString": "uint88"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11851:8:24"
                  },
                  "scope": 9696,
                  "src": "11796:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8573,
                    "nodeType": "Block",
                    "src": "12360:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8554,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8549,
                            "src": "12374:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8557,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12387:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint80_$",
                                    "typeString": "type(uint80)"
                                  },
                                  "typeName": {
                                    "id": 8556,
                                    "name": "uint80",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12387:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint80_$",
                                    "typeString": "type(uint80)"
                                  }
                                ],
                                "id": 8555,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "12382:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12382:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint80",
                                "typeString": "type(uint80)"
                              }
                            },
                            "id": 8559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "12395:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "12382:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            }
                          },
                          "src": "12374:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8567,
                        "nodeType": "IfStatement",
                        "src": "12370:103:24",
                        "trueBody": {
                          "id": 8566,
                          "nodeType": "Block",
                          "src": "12400:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3830",
                                    "id": 8562,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12452:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_80_by_1",
                                      "typeString": "int_const 80"
                                    },
                                    "value": "80"
                                  },
                                  {
                                    "id": 8563,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8549,
                                    "src": "12456:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_80_by_1",
                                      "typeString": "int_const 80"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8561,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "12421:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8564,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12421:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8565,
                              "nodeType": "RevertStatement",
                              "src": "12414:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8570,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8549,
                              "src": "12496:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12489:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint80_$",
                              "typeString": "type(uint80)"
                            },
                            "typeName": {
                              "id": 8568,
                              "name": "uint80",
                              "nodeType": "ElementaryTypeName",
                              "src": "12489:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12489:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "functionReturnParameters": 8553,
                        "id": 8572,
                        "nodeType": "Return",
                        "src": "12482:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8547,
                    "nodeType": "StructuredDocumentation",
                    "src": "12015:276:24",
                    "text": " @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"
                  },
                  "id": 8574,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint80",
                  "nameLocation": "12305:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8549,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12322:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8574,
                        "src": "12314:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8548,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12314:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12313:15:24"
                  },
                  "returnParameters": {
                    "id": 8553,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8552,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8574,
                        "src": "12352:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint80",
                          "typeString": "uint80"
                        },
                        "typeName": {
                          "id": 8551,
                          "name": "uint80",
                          "nodeType": "ElementaryTypeName",
                          "src": "12352:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint80",
                            "typeString": "uint80"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12351:8:24"
                  },
                  "scope": 9696,
                  "src": "12296:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8601,
                    "nodeType": "Block",
                    "src": "12860:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8582,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8577,
                            "src": "12874:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12887:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint72_$",
                                    "typeString": "type(uint72)"
                                  },
                                  "typeName": {
                                    "id": 8584,
                                    "name": "uint72",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12887:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint72_$",
                                    "typeString": "type(uint72)"
                                  }
                                ],
                                "id": 8583,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "12882:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12882:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint72",
                                "typeString": "type(uint72)"
                              }
                            },
                            "id": 8587,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "12895:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "12882:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint72",
                              "typeString": "uint72"
                            }
                          },
                          "src": "12874:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8595,
                        "nodeType": "IfStatement",
                        "src": "12870:103:24",
                        "trueBody": {
                          "id": 8594,
                          "nodeType": "Block",
                          "src": "12900:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3732",
                                    "id": 8590,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12952:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_72_by_1",
                                      "typeString": "int_const 72"
                                    },
                                    "value": "72"
                                  },
                                  {
                                    "id": 8591,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8577,
                                    "src": "12956:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_72_by_1",
                                      "typeString": "int_const 72"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8589,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "12921:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12921:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8593,
                              "nodeType": "RevertStatement",
                              "src": "12914:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8598,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8577,
                              "src": "12996:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12989:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint72_$",
                              "typeString": "type(uint72)"
                            },
                            "typeName": {
                              "id": 8596,
                              "name": "uint72",
                              "nodeType": "ElementaryTypeName",
                              "src": "12989:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12989:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        },
                        "functionReturnParameters": 8581,
                        "id": 8600,
                        "nodeType": "Return",
                        "src": "12982:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8575,
                    "nodeType": "StructuredDocumentation",
                    "src": "12515:276:24",
                    "text": " @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"
                  },
                  "id": 8602,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint72",
                  "nameLocation": "12805:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8577,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12822:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8602,
                        "src": "12814:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12814:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12813:15:24"
                  },
                  "returnParameters": {
                    "id": 8581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8580,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8602,
                        "src": "12852:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        },
                        "typeName": {
                          "id": 8579,
                          "name": "uint72",
                          "nodeType": "ElementaryTypeName",
                          "src": "12852:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12851:8:24"
                  },
                  "scope": 9696,
                  "src": "12796:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8629,
                    "nodeType": "Block",
                    "src": "13360:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8610,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8605,
                            "src": "13374:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13387:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  },
                                  "typeName": {
                                    "id": 8612,
                                    "name": "uint64",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13387:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint64_$",
                                    "typeString": "type(uint64)"
                                  }
                                ],
                                "id": 8611,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "13382:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13382:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint64",
                                "typeString": "type(uint64)"
                              }
                            },
                            "id": 8615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "13395:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "13382:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "src": "13374:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8623,
                        "nodeType": "IfStatement",
                        "src": "13370:103:24",
                        "trueBody": {
                          "id": 8622,
                          "nodeType": "Block",
                          "src": "13400:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3634",
                                    "id": 8618,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13452:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    "value": "64"
                                  },
                                  {
                                    "id": 8619,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8605,
                                    "src": "13456:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8617,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "13421:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13421:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8621,
                              "nodeType": "RevertStatement",
                              "src": "13414:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8626,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8605,
                              "src": "13496:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13489:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint64_$",
                              "typeString": "type(uint64)"
                            },
                            "typeName": {
                              "id": 8624,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "13489:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13489:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "functionReturnParameters": 8609,
                        "id": 8628,
                        "nodeType": "Return",
                        "src": "13482:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8603,
                    "nodeType": "StructuredDocumentation",
                    "src": "13015:276:24",
                    "text": " @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"
                  },
                  "id": 8630,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint64",
                  "nameLocation": "13305:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8606,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8605,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "13322:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8630,
                        "src": "13314:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8604,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13314:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13313:15:24"
                  },
                  "returnParameters": {
                    "id": 8609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8608,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8630,
                        "src": "13352:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "typeName": {
                          "id": 8607,
                          "name": "uint64",
                          "nodeType": "ElementaryTypeName",
                          "src": "13352:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13351:8:24"
                  },
                  "scope": 9696,
                  "src": "13296:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8657,
                    "nodeType": "Block",
                    "src": "13860:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8638,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8633,
                            "src": "13874:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8641,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13887:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint56_$",
                                    "typeString": "type(uint56)"
                                  },
                                  "typeName": {
                                    "id": 8640,
                                    "name": "uint56",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13887:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint56_$",
                                    "typeString": "type(uint56)"
                                  }
                                ],
                                "id": 8639,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "13882:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13882:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint56",
                                "typeString": "type(uint56)"
                              }
                            },
                            "id": 8643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "13895:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "13882:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint56",
                              "typeString": "uint56"
                            }
                          },
                          "src": "13874:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8651,
                        "nodeType": "IfStatement",
                        "src": "13870:103:24",
                        "trueBody": {
                          "id": 8650,
                          "nodeType": "Block",
                          "src": "13900:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3536",
                                    "id": 8646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13952:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_56_by_1",
                                      "typeString": "int_const 56"
                                    },
                                    "value": "56"
                                  },
                                  {
                                    "id": 8647,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8633,
                                    "src": "13956:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_56_by_1",
                                      "typeString": "int_const 56"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8645,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "13921:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13921:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8649,
                              "nodeType": "RevertStatement",
                              "src": "13914:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8654,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8633,
                              "src": "13996:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13989:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint56_$",
                              "typeString": "type(uint56)"
                            },
                            "typeName": {
                              "id": 8652,
                              "name": "uint56",
                              "nodeType": "ElementaryTypeName",
                              "src": "13989:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13989:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint56",
                            "typeString": "uint56"
                          }
                        },
                        "functionReturnParameters": 8637,
                        "id": 8656,
                        "nodeType": "Return",
                        "src": "13982:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8631,
                    "nodeType": "StructuredDocumentation",
                    "src": "13515:276:24",
                    "text": " @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"
                  },
                  "id": 8658,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint56",
                  "nameLocation": "13805:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8633,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "13822:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8658,
                        "src": "13814:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8632,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13814:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13813:15:24"
                  },
                  "returnParameters": {
                    "id": 8637,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8636,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8658,
                        "src": "13852:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint56",
                          "typeString": "uint56"
                        },
                        "typeName": {
                          "id": 8635,
                          "name": "uint56",
                          "nodeType": "ElementaryTypeName",
                          "src": "13852:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint56",
                            "typeString": "uint56"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13851:8:24"
                  },
                  "scope": 9696,
                  "src": "13796:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8685,
                    "nodeType": "Block",
                    "src": "14360:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8666,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8661,
                            "src": "14374:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14387:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint48_$",
                                    "typeString": "type(uint48)"
                                  },
                                  "typeName": {
                                    "id": 8668,
                                    "name": "uint48",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14387:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint48_$",
                                    "typeString": "type(uint48)"
                                  }
                                ],
                                "id": 8667,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "14382:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14382:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint48",
                                "typeString": "type(uint48)"
                              }
                            },
                            "id": 8671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "14395:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "14382:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint48",
                              "typeString": "uint48"
                            }
                          },
                          "src": "14374:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8679,
                        "nodeType": "IfStatement",
                        "src": "14370:103:24",
                        "trueBody": {
                          "id": 8678,
                          "nodeType": "Block",
                          "src": "14400:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3438",
                                    "id": 8674,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14452:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    "value": "48"
                                  },
                                  {
                                    "id": 8675,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8661,
                                    "src": "14456:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8673,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "14421:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14421:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8677,
                              "nodeType": "RevertStatement",
                              "src": "14414:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8682,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8661,
                              "src": "14496:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8681,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14489:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint48_$",
                              "typeString": "type(uint48)"
                            },
                            "typeName": {
                              "id": 8680,
                              "name": "uint48",
                              "nodeType": "ElementaryTypeName",
                              "src": "14489:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14489:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint48",
                            "typeString": "uint48"
                          }
                        },
                        "functionReturnParameters": 8665,
                        "id": 8684,
                        "nodeType": "Return",
                        "src": "14482:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8659,
                    "nodeType": "StructuredDocumentation",
                    "src": "14015:276:24",
                    "text": " @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"
                  },
                  "id": 8686,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint48",
                  "nameLocation": "14305:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8662,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8661,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "14322:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8686,
                        "src": "14314:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8660,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14314:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14313:15:24"
                  },
                  "returnParameters": {
                    "id": 8665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8664,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8686,
                        "src": "14352:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint48",
                          "typeString": "uint48"
                        },
                        "typeName": {
                          "id": 8663,
                          "name": "uint48",
                          "nodeType": "ElementaryTypeName",
                          "src": "14352:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint48",
                            "typeString": "uint48"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14351:8:24"
                  },
                  "scope": 9696,
                  "src": "14296:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8713,
                    "nodeType": "Block",
                    "src": "14860:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8694,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8689,
                            "src": "14874:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8697,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14887:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint40_$",
                                    "typeString": "type(uint40)"
                                  },
                                  "typeName": {
                                    "id": 8696,
                                    "name": "uint40",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14887:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint40_$",
                                    "typeString": "type(uint40)"
                                  }
                                ],
                                "id": 8695,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "14882:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14882:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint40",
                                "typeString": "type(uint40)"
                              }
                            },
                            "id": 8699,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "14895:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "14882:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          "src": "14874:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8707,
                        "nodeType": "IfStatement",
                        "src": "14870:103:24",
                        "trueBody": {
                          "id": 8706,
                          "nodeType": "Block",
                          "src": "14900:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3430",
                                    "id": 8702,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14952:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_40_by_1",
                                      "typeString": "int_const 40"
                                    },
                                    "value": "40"
                                  },
                                  {
                                    "id": 8703,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8689,
                                    "src": "14956:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_40_by_1",
                                      "typeString": "int_const 40"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8701,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "14921:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8704,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14921:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8705,
                              "nodeType": "RevertStatement",
                              "src": "14914:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8710,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8689,
                              "src": "14996:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "14989:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint40_$",
                              "typeString": "type(uint40)"
                            },
                            "typeName": {
                              "id": 8708,
                              "name": "uint40",
                              "nodeType": "ElementaryTypeName",
                              "src": "14989:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14989:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "functionReturnParameters": 8693,
                        "id": 8712,
                        "nodeType": "Return",
                        "src": "14982:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8687,
                    "nodeType": "StructuredDocumentation",
                    "src": "14515:276:24",
                    "text": " @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"
                  },
                  "id": 8714,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint40",
                  "nameLocation": "14805:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8690,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8689,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "14822:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8714,
                        "src": "14814:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8688,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14814:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14813:15:24"
                  },
                  "returnParameters": {
                    "id": 8693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8692,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8714,
                        "src": "14852:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "typeName": {
                          "id": 8691,
                          "name": "uint40",
                          "nodeType": "ElementaryTypeName",
                          "src": "14852:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14851:8:24"
                  },
                  "scope": 9696,
                  "src": "14796:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8741,
                    "nodeType": "Block",
                    "src": "15360:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8728,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8722,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8717,
                            "src": "15374:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15387:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 8724,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15387:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  }
                                ],
                                "id": 8723,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "15382:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15382:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint32",
                                "typeString": "type(uint32)"
                              }
                            },
                            "id": 8727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "15395:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "15382:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "15374:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8735,
                        "nodeType": "IfStatement",
                        "src": "15370:103:24",
                        "trueBody": {
                          "id": 8734,
                          "nodeType": "Block",
                          "src": "15400:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3332",
                                    "id": 8730,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15452:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  },
                                  {
                                    "id": 8731,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8717,
                                    "src": "15456:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8729,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "15421:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8732,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15421:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8733,
                              "nodeType": "RevertStatement",
                              "src": "15414:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8738,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8717,
                              "src": "15496:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15489:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint32_$",
                              "typeString": "type(uint32)"
                            },
                            "typeName": {
                              "id": 8736,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15489:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15489:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "functionReturnParameters": 8721,
                        "id": 8740,
                        "nodeType": "Return",
                        "src": "15482:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8715,
                    "nodeType": "StructuredDocumentation",
                    "src": "15015:276:24",
                    "text": " @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"
                  },
                  "id": 8742,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint32",
                  "nameLocation": "15305:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8718,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8717,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "15322:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8742,
                        "src": "15314:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8716,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15314:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15313:15:24"
                  },
                  "returnParameters": {
                    "id": 8721,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8720,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8742,
                        "src": "15352:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 8719,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15352:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15351:8:24"
                  },
                  "scope": 9696,
                  "src": "15296:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8769,
                    "nodeType": "Block",
                    "src": "15860:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8750,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8745,
                            "src": "15874:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8753,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15887:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  },
                                  "typeName": {
                                    "id": 8752,
                                    "name": "uint24",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15887:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  }
                                ],
                                "id": 8751,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "15882:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15882:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint24",
                                "typeString": "type(uint24)"
                              }
                            },
                            "id": 8755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "15895:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "15882:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "src": "15874:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8763,
                        "nodeType": "IfStatement",
                        "src": "15870:103:24",
                        "trueBody": {
                          "id": 8762,
                          "nodeType": "Block",
                          "src": "15900:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3234",
                                    "id": 8758,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15952:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_24_by_1",
                                      "typeString": "int_const 24"
                                    },
                                    "value": "24"
                                  },
                                  {
                                    "id": 8759,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8745,
                                    "src": "15956:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_24_by_1",
                                      "typeString": "int_const 24"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8757,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "15921:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15921:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8761,
                              "nodeType": "RevertStatement",
                              "src": "15914:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8766,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8745,
                              "src": "15996:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15989:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint24_$",
                              "typeString": "type(uint24)"
                            },
                            "typeName": {
                              "id": 8764,
                              "name": "uint24",
                              "nodeType": "ElementaryTypeName",
                              "src": "15989:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15989:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "functionReturnParameters": 8749,
                        "id": 8768,
                        "nodeType": "Return",
                        "src": "15982:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8743,
                    "nodeType": "StructuredDocumentation",
                    "src": "15515:276:24",
                    "text": " @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"
                  },
                  "id": 8770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint24",
                  "nameLocation": "15805:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8746,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8745,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "15822:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8770,
                        "src": "15814:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8744,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15814:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15813:15:24"
                  },
                  "returnParameters": {
                    "id": 8749,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8748,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8770,
                        "src": "15852:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 8747,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "15852:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15851:8:24"
                  },
                  "scope": 9696,
                  "src": "15796:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8797,
                    "nodeType": "Block",
                    "src": "16360:149:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8778,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8773,
                            "src": "16374:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16387:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint16_$",
                                    "typeString": "type(uint16)"
                                  },
                                  "typeName": {
                                    "id": 8780,
                                    "name": "uint16",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16387:6:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint16_$",
                                    "typeString": "type(uint16)"
                                  }
                                ],
                                "id": 8779,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "16382:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16382:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint16",
                                "typeString": "type(uint16)"
                              }
                            },
                            "id": 8783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "16395:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "16382:16:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "src": "16374:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8791,
                        "nodeType": "IfStatement",
                        "src": "16370:103:24",
                        "trueBody": {
                          "id": 8790,
                          "nodeType": "Block",
                          "src": "16400:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3136",
                                    "id": 8786,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16452:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    "value": "16"
                                  },
                                  {
                                    "id": 8787,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8773,
                                    "src": "16456:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8785,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "16421:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16421:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8789,
                              "nodeType": "RevertStatement",
                              "src": "16414:48:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8794,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8773,
                              "src": "16496:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16489:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint16_$",
                              "typeString": "type(uint16)"
                            },
                            "typeName": {
                              "id": 8792,
                              "name": "uint16",
                              "nodeType": "ElementaryTypeName",
                              "src": "16489:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16489:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "functionReturnParameters": 8777,
                        "id": 8796,
                        "nodeType": "Return",
                        "src": "16482:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8771,
                    "nodeType": "StructuredDocumentation",
                    "src": "16015:276:24",
                    "text": " @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"
                  },
                  "id": 8798,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint16",
                  "nameLocation": "16305:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8773,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "16322:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8798,
                        "src": "16314:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8772,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16314:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16313:15:24"
                  },
                  "returnParameters": {
                    "id": 8777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8776,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8798,
                        "src": "16352:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "typeName": {
                          "id": 8775,
                          "name": "uint16",
                          "nodeType": "ElementaryTypeName",
                          "src": "16352:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16351:8:24"
                  },
                  "scope": 9696,
                  "src": "16296:213:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8825,
                    "nodeType": "Block",
                    "src": "16854:146:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8806,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8801,
                            "src": "16868:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 8809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16881:5:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 8808,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16881:5:24",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  }
                                ],
                                "id": 8807,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "16876:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 8810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16876:11:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint8",
                                "typeString": "type(uint8)"
                              }
                            },
                            "id": 8811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "16888:3:24",
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "16876:15:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "16868:23:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8819,
                        "nodeType": "IfStatement",
                        "src": "16864:101:24",
                        "trueBody": {
                          "id": 8818,
                          "nodeType": "Block",
                          "src": "16893:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "38",
                                    "id": 8814,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16945:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  {
                                    "id": 8815,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8801,
                                    "src": "16948:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8813,
                                  "name": "SafeCastOverflowedUintDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7941,
                                  "src": "16914:30:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint8,uint256) pure returns (error)"
                                  }
                                },
                                "id": 8816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16914:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8817,
                              "nodeType": "RevertStatement",
                              "src": "16907:47:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8822,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8801,
                              "src": "16987:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8821,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "16981:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 8820,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "16981:5:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16981:12:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "functionReturnParameters": 8805,
                        "id": 8824,
                        "nodeType": "Return",
                        "src": "16974:19:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8799,
                    "nodeType": "StructuredDocumentation",
                    "src": "16515:272:24",
                    "text": " @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"
                  },
                  "id": 8826,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint8",
                  "nameLocation": "16801:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8802,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8801,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "16817:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8826,
                        "src": "16809:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8800,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16809:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16808:15:24"
                  },
                  "returnParameters": {
                    "id": 8805,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8804,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8826,
                        "src": "16847:5:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 8803,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "16847:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16846:7:24"
                  },
                  "scope": 9696,
                  "src": "16792:208:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8848,
                    "nodeType": "Block",
                    "src": "17236:128:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 8836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8834,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8829,
                            "src": "17250:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17258:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "17250:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8842,
                        "nodeType": "IfStatement",
                        "src": "17246:81:24",
                        "trueBody": {
                          "id": 8841,
                          "nodeType": "Block",
                          "src": "17261:66:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 8838,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8829,
                                    "src": "17310:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 8837,
                                  "name": "SafeCastOverflowedIntToUint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7946,
                                  "src": "17282:27:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (int256) pure returns (error)"
                                  }
                                },
                                "id": 8839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17282:34:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8840,
                              "nodeType": "RevertStatement",
                              "src": "17275:41:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8845,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8829,
                              "src": "17351:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 8844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "17343:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 8843,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17343:7:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 8846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17343:14:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 8833,
                        "id": 8847,
                        "nodeType": "Return",
                        "src": "17336:21:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8827,
                    "nodeType": "StructuredDocumentation",
                    "src": "17006:160:24",
                    "text": " @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."
                  },
                  "id": 8849,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint256",
                  "nameLocation": "17180:9:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8830,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8829,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "17197:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8849,
                        "src": "17190:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 8828,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17190:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17189:14:24"
                  },
                  "returnParameters": {
                    "id": 8833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8832,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 8849,
                        "src": "17227:7:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8831,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17227:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17226:9:24"
                  },
                  "scope": 9696,
                  "src": "17171:193:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8874,
                    "nodeType": "Block",
                    "src": "17761:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 8862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8857,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8855,
                            "src": "17771:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int248",
                              "typeString": "int248"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8860,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8852,
                                "src": "17791:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 8859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17784:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int248_$",
                                "typeString": "type(int248)"
                              },
                              "typeName": {
                                "id": 8858,
                                "name": "int248",
                                "nodeType": "ElementaryTypeName",
                                "src": "17784:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17784:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int248",
                              "typeString": "int248"
                            }
                          },
                          "src": "17771:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int248",
                            "typeString": "int248"
                          }
                        },
                        "id": 8863,
                        "nodeType": "ExpressionStatement",
                        "src": "17771:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 8866,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8864,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8855,
                            "src": "17811:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int248",
                              "typeString": "int248"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8865,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8852,
                            "src": "17825:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "17811:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8873,
                        "nodeType": "IfStatement",
                        "src": "17807:98:24",
                        "trueBody": {
                          "id": 8872,
                          "nodeType": "Block",
                          "src": "17832:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323438",
                                    "id": 8868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17883:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_248_by_1",
                                      "typeString": "int_const 248"
                                    },
                                    "value": "248"
                                  },
                                  {
                                    "id": 8869,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8852,
                                    "src": "17888:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_248_by_1",
                                      "typeString": "int_const 248"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 8867,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "17853:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 8870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17853:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8871,
                              "nodeType": "RevertStatement",
                              "src": "17846:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8850,
                    "nodeType": "StructuredDocumentation",
                    "src": "17370:312:24",
                    "text": " @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"
                  },
                  "id": 8875,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt248",
                  "nameLocation": "17696:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8853,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8852,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "17712:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8875,
                        "src": "17705:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 8851,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17705:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17704:14:24"
                  },
                  "returnParameters": {
                    "id": 8856,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8855,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "17749:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8875,
                        "src": "17742:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int248",
                          "typeString": "int248"
                        },
                        "typeName": {
                          "id": 8854,
                          "name": "int248",
                          "nodeType": "ElementaryTypeName",
                          "src": "17742:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int248",
                            "typeString": "int248"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17741:19:24"
                  },
                  "scope": 9696,
                  "src": "17687:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8900,
                    "nodeType": "Block",
                    "src": "18308:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 8888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8883,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8881,
                            "src": "18318:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int240",
                              "typeString": "int240"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8886,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8878,
                                "src": "18338:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 8885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18331:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int240_$",
                                "typeString": "type(int240)"
                              },
                              "typeName": {
                                "id": 8884,
                                "name": "int240",
                                "nodeType": "ElementaryTypeName",
                                "src": "18331:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18331:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int240",
                              "typeString": "int240"
                            }
                          },
                          "src": "18318:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int240",
                            "typeString": "int240"
                          }
                        },
                        "id": 8889,
                        "nodeType": "ExpressionStatement",
                        "src": "18318:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 8892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8890,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8881,
                            "src": "18358:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int240",
                              "typeString": "int240"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8891,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8878,
                            "src": "18372:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "18358:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8899,
                        "nodeType": "IfStatement",
                        "src": "18354:98:24",
                        "trueBody": {
                          "id": 8898,
                          "nodeType": "Block",
                          "src": "18379:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323430",
                                    "id": 8894,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18430:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_240_by_1",
                                      "typeString": "int_const 240"
                                    },
                                    "value": "240"
                                  },
                                  {
                                    "id": 8895,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8878,
                                    "src": "18435:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_240_by_1",
                                      "typeString": "int_const 240"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 8893,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "18400:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 8896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18400:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8897,
                              "nodeType": "RevertStatement",
                              "src": "18393:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8876,
                    "nodeType": "StructuredDocumentation",
                    "src": "17917:312:24",
                    "text": " @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"
                  },
                  "id": 8901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt240",
                  "nameLocation": "18243:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8878,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "18259:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "18252:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 8877,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18252:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18251:14:24"
                  },
                  "returnParameters": {
                    "id": 8882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8881,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "18296:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8901,
                        "src": "18289:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int240",
                          "typeString": "int240"
                        },
                        "typeName": {
                          "id": 8880,
                          "name": "int240",
                          "nodeType": "ElementaryTypeName",
                          "src": "18289:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int240",
                            "typeString": "int240"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18288:19:24"
                  },
                  "scope": 9696,
                  "src": "18234:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8926,
                    "nodeType": "Block",
                    "src": "18855:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 8914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8909,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8907,
                            "src": "18865:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int232",
                              "typeString": "int232"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8912,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8904,
                                "src": "18885:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 8911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18878:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int232_$",
                                "typeString": "type(int232)"
                              },
                              "typeName": {
                                "id": 8910,
                                "name": "int232",
                                "nodeType": "ElementaryTypeName",
                                "src": "18878:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18878:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int232",
                              "typeString": "int232"
                            }
                          },
                          "src": "18865:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int232",
                            "typeString": "int232"
                          }
                        },
                        "id": 8915,
                        "nodeType": "ExpressionStatement",
                        "src": "18865:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 8918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8916,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8907,
                            "src": "18905:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int232",
                              "typeString": "int232"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8917,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8904,
                            "src": "18919:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "18905:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8925,
                        "nodeType": "IfStatement",
                        "src": "18901:98:24",
                        "trueBody": {
                          "id": 8924,
                          "nodeType": "Block",
                          "src": "18926:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323332",
                                    "id": 8920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18977:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_232_by_1",
                                      "typeString": "int_const 232"
                                    },
                                    "value": "232"
                                  },
                                  {
                                    "id": 8921,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8904,
                                    "src": "18982:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_232_by_1",
                                      "typeString": "int_const 232"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 8919,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "18947:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 8922,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18947:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8923,
                              "nodeType": "RevertStatement",
                              "src": "18940:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8902,
                    "nodeType": "StructuredDocumentation",
                    "src": "18464:312:24",
                    "text": " @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"
                  },
                  "id": 8927,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt232",
                  "nameLocation": "18790:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8904,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "18806:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8927,
                        "src": "18799:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 8903,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18799:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18798:14:24"
                  },
                  "returnParameters": {
                    "id": 8908,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8907,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "18843:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8927,
                        "src": "18836:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int232",
                          "typeString": "int232"
                        },
                        "typeName": {
                          "id": 8906,
                          "name": "int232",
                          "nodeType": "ElementaryTypeName",
                          "src": "18836:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int232",
                            "typeString": "int232"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18835:19:24"
                  },
                  "scope": 9696,
                  "src": "18781:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8952,
                    "nodeType": "Block",
                    "src": "19402:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 8940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8935,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8933,
                            "src": "19412:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int224",
                              "typeString": "int224"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8938,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8930,
                                "src": "19432:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 8937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "19425:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int224_$",
                                "typeString": "type(int224)"
                              },
                              "typeName": {
                                "id": 8936,
                                "name": "int224",
                                "nodeType": "ElementaryTypeName",
                                "src": "19425:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19425:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int224",
                              "typeString": "int224"
                            }
                          },
                          "src": "19412:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int224",
                            "typeString": "int224"
                          }
                        },
                        "id": 8941,
                        "nodeType": "ExpressionStatement",
                        "src": "19412:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 8944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8942,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8933,
                            "src": "19452:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int224",
                              "typeString": "int224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8943,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8930,
                            "src": "19466:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "19452:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8951,
                        "nodeType": "IfStatement",
                        "src": "19448:98:24",
                        "trueBody": {
                          "id": 8950,
                          "nodeType": "Block",
                          "src": "19473:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323234",
                                    "id": 8946,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "19524:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    "value": "224"
                                  },
                                  {
                                    "id": 8947,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8930,
                                    "src": "19529:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_224_by_1",
                                      "typeString": "int_const 224"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 8945,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "19494:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 8948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19494:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8949,
                              "nodeType": "RevertStatement",
                              "src": "19487:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8928,
                    "nodeType": "StructuredDocumentation",
                    "src": "19011:312:24",
                    "text": " @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"
                  },
                  "id": 8953,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt224",
                  "nameLocation": "19337:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8931,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8930,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "19353:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8953,
                        "src": "19346:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 8929,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19346:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19345:14:24"
                  },
                  "returnParameters": {
                    "id": 8934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8933,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "19390:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8953,
                        "src": "19383:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int224",
                          "typeString": "int224"
                        },
                        "typeName": {
                          "id": 8932,
                          "name": "int224",
                          "nodeType": "ElementaryTypeName",
                          "src": "19383:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int224",
                            "typeString": "int224"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19382:19:24"
                  },
                  "scope": 9696,
                  "src": "19328:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8978,
                    "nodeType": "Block",
                    "src": "19949:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 8966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8961,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8959,
                            "src": "19959:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int216",
                              "typeString": "int216"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8964,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8956,
                                "src": "19979:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 8963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "19972:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int216_$",
                                "typeString": "type(int216)"
                              },
                              "typeName": {
                                "id": 8962,
                                "name": "int216",
                                "nodeType": "ElementaryTypeName",
                                "src": "19972:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19972:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int216",
                              "typeString": "int216"
                            }
                          },
                          "src": "19959:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int216",
                            "typeString": "int216"
                          }
                        },
                        "id": 8967,
                        "nodeType": "ExpressionStatement",
                        "src": "19959:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 8970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8968,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8959,
                            "src": "19999:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int216",
                              "typeString": "int216"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8969,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8956,
                            "src": "20013:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "19999:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8977,
                        "nodeType": "IfStatement",
                        "src": "19995:98:24",
                        "trueBody": {
                          "id": 8976,
                          "nodeType": "Block",
                          "src": "20020:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323136",
                                    "id": 8972,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20071:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_216_by_1",
                                      "typeString": "int_const 216"
                                    },
                                    "value": "216"
                                  },
                                  {
                                    "id": 8973,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8956,
                                    "src": "20076:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_216_by_1",
                                      "typeString": "int_const 216"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 8971,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "20041:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 8974,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20041:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 8975,
                              "nodeType": "RevertStatement",
                              "src": "20034:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8954,
                    "nodeType": "StructuredDocumentation",
                    "src": "19558:312:24",
                    "text": " @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"
                  },
                  "id": 8979,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt216",
                  "nameLocation": "19884:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8956,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "19900:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8979,
                        "src": "19893:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 8955,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19893:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19892:14:24"
                  },
                  "returnParameters": {
                    "id": 8960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8959,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "19937:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 8979,
                        "src": "19930:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int216",
                          "typeString": "int216"
                        },
                        "typeName": {
                          "id": 8958,
                          "name": "int216",
                          "nodeType": "ElementaryTypeName",
                          "src": "19930:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int216",
                            "typeString": "int216"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19929:19:24"
                  },
                  "scope": 9696,
                  "src": "19875:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9004,
                    "nodeType": "Block",
                    "src": "20496:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 8992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8987,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8985,
                            "src": "20506:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int208",
                              "typeString": "int208"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8990,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8982,
                                "src": "20526:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 8989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "20519:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int208_$",
                                "typeString": "type(int208)"
                              },
                              "typeName": {
                                "id": 8988,
                                "name": "int208",
                                "nodeType": "ElementaryTypeName",
                                "src": "20519:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20519:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int208",
                              "typeString": "int208"
                            }
                          },
                          "src": "20506:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int208",
                            "typeString": "int208"
                          }
                        },
                        "id": 8993,
                        "nodeType": "ExpressionStatement",
                        "src": "20506:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 8996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8994,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8985,
                            "src": "20546:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int208",
                              "typeString": "int208"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 8995,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8982,
                            "src": "20560:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "20546:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9003,
                        "nodeType": "IfStatement",
                        "src": "20542:98:24",
                        "trueBody": {
                          "id": 9002,
                          "nodeType": "Block",
                          "src": "20567:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323038",
                                    "id": 8998,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20618:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_208_by_1",
                                      "typeString": "int_const 208"
                                    },
                                    "value": "208"
                                  },
                                  {
                                    "id": 8999,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8982,
                                    "src": "20623:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_208_by_1",
                                      "typeString": "int_const 208"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 8997,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "20588:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20588:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9001,
                              "nodeType": "RevertStatement",
                              "src": "20581:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8980,
                    "nodeType": "StructuredDocumentation",
                    "src": "20105:312:24",
                    "text": " @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"
                  },
                  "id": 9005,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt208",
                  "nameLocation": "20431:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8983,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8982,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "20447:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9005,
                        "src": "20440:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 8981,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20440:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20439:14:24"
                  },
                  "returnParameters": {
                    "id": 8986,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8985,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "20484:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9005,
                        "src": "20477:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int208",
                          "typeString": "int208"
                        },
                        "typeName": {
                          "id": 8984,
                          "name": "int208",
                          "nodeType": "ElementaryTypeName",
                          "src": "20477:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int208",
                            "typeString": "int208"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20476:19:24"
                  },
                  "scope": 9696,
                  "src": "20422:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9030,
                    "nodeType": "Block",
                    "src": "21043:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9013,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9011,
                            "src": "21053:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int200",
                              "typeString": "int200"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9016,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9008,
                                "src": "21073:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "21066:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int200_$",
                                "typeString": "type(int200)"
                              },
                              "typeName": {
                                "id": 9014,
                                "name": "int200",
                                "nodeType": "ElementaryTypeName",
                                "src": "21066:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9017,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21066:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int200",
                              "typeString": "int200"
                            }
                          },
                          "src": "21053:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int200",
                            "typeString": "int200"
                          }
                        },
                        "id": 9019,
                        "nodeType": "ExpressionStatement",
                        "src": "21053:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9020,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9011,
                            "src": "21093:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int200",
                              "typeString": "int200"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9021,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9008,
                            "src": "21107:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21093:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9029,
                        "nodeType": "IfStatement",
                        "src": "21089:98:24",
                        "trueBody": {
                          "id": 9028,
                          "nodeType": "Block",
                          "src": "21114:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "323030",
                                    "id": 9024,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "21165:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_200_by_1",
                                      "typeString": "int_const 200"
                                    },
                                    "value": "200"
                                  },
                                  {
                                    "id": 9025,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9008,
                                    "src": "21170:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_200_by_1",
                                      "typeString": "int_const 200"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9023,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "21135:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21135:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9027,
                              "nodeType": "RevertStatement",
                              "src": "21128:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9006,
                    "nodeType": "StructuredDocumentation",
                    "src": "20652:312:24",
                    "text": " @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"
                  },
                  "id": 9031,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt200",
                  "nameLocation": "20978:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9009,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9008,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "20994:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9031,
                        "src": "20987:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9007,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20987:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20986:14:24"
                  },
                  "returnParameters": {
                    "id": 9012,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9011,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "21031:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9031,
                        "src": "21024:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int200",
                          "typeString": "int200"
                        },
                        "typeName": {
                          "id": 9010,
                          "name": "int200",
                          "nodeType": "ElementaryTypeName",
                          "src": "21024:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int200",
                            "typeString": "int200"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21023:19:24"
                  },
                  "scope": 9696,
                  "src": "20969:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9056,
                    "nodeType": "Block",
                    "src": "21590:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9039,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9037,
                            "src": "21600:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int192",
                              "typeString": "int192"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9042,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9034,
                                "src": "21620:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9041,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "21613:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int192_$",
                                "typeString": "type(int192)"
                              },
                              "typeName": {
                                "id": 9040,
                                "name": "int192",
                                "nodeType": "ElementaryTypeName",
                                "src": "21613:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21613:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int192",
                              "typeString": "int192"
                            }
                          },
                          "src": "21600:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int192",
                            "typeString": "int192"
                          }
                        },
                        "id": 9045,
                        "nodeType": "ExpressionStatement",
                        "src": "21600:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9046,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9037,
                            "src": "21640:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int192",
                              "typeString": "int192"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9047,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9034,
                            "src": "21654:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "21640:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9055,
                        "nodeType": "IfStatement",
                        "src": "21636:98:24",
                        "trueBody": {
                          "id": 9054,
                          "nodeType": "Block",
                          "src": "21661:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313932",
                                    "id": 9050,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "21712:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    "value": "192"
                                  },
                                  {
                                    "id": 9051,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9034,
                                    "src": "21717:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_192_by_1",
                                      "typeString": "int_const 192"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9049,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "21682:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21682:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9053,
                              "nodeType": "RevertStatement",
                              "src": "21675:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9032,
                    "nodeType": "StructuredDocumentation",
                    "src": "21199:312:24",
                    "text": " @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"
                  },
                  "id": 9057,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt192",
                  "nameLocation": "21525:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9034,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "21541:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9057,
                        "src": "21534:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9033,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21534:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21533:14:24"
                  },
                  "returnParameters": {
                    "id": 9038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9037,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "21578:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9057,
                        "src": "21571:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int192",
                          "typeString": "int192"
                        },
                        "typeName": {
                          "id": 9036,
                          "name": "int192",
                          "nodeType": "ElementaryTypeName",
                          "src": "21571:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int192",
                            "typeString": "int192"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21570:19:24"
                  },
                  "scope": 9696,
                  "src": "21516:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9082,
                    "nodeType": "Block",
                    "src": "22137:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9065,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9063,
                            "src": "22147:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int184",
                              "typeString": "int184"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9068,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9060,
                                "src": "22167:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22160:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int184_$",
                                "typeString": "type(int184)"
                              },
                              "typeName": {
                                "id": 9066,
                                "name": "int184",
                                "nodeType": "ElementaryTypeName",
                                "src": "22160:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22160:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int184",
                              "typeString": "int184"
                            }
                          },
                          "src": "22147:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int184",
                            "typeString": "int184"
                          }
                        },
                        "id": 9071,
                        "nodeType": "ExpressionStatement",
                        "src": "22147:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9072,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9063,
                            "src": "22187:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int184",
                              "typeString": "int184"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9073,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9060,
                            "src": "22201:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "22187:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9081,
                        "nodeType": "IfStatement",
                        "src": "22183:98:24",
                        "trueBody": {
                          "id": 9080,
                          "nodeType": "Block",
                          "src": "22208:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313834",
                                    "id": 9076,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "22259:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_184_by_1",
                                      "typeString": "int_const 184"
                                    },
                                    "value": "184"
                                  },
                                  {
                                    "id": 9077,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9060,
                                    "src": "22264:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_184_by_1",
                                      "typeString": "int_const 184"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9075,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "22229:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22229:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9079,
                              "nodeType": "RevertStatement",
                              "src": "22222:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9058,
                    "nodeType": "StructuredDocumentation",
                    "src": "21746:312:24",
                    "text": " @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"
                  },
                  "id": 9083,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt184",
                  "nameLocation": "22072:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9061,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9060,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "22088:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9083,
                        "src": "22081:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9059,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22081:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22080:14:24"
                  },
                  "returnParameters": {
                    "id": 9064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9063,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "22125:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9083,
                        "src": "22118:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int184",
                          "typeString": "int184"
                        },
                        "typeName": {
                          "id": 9062,
                          "name": "int184",
                          "nodeType": "ElementaryTypeName",
                          "src": "22118:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int184",
                            "typeString": "int184"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22117:19:24"
                  },
                  "scope": 9696,
                  "src": "22063:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9108,
                    "nodeType": "Block",
                    "src": "22684:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9091,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9089,
                            "src": "22694:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int176",
                              "typeString": "int176"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9094,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9086,
                                "src": "22714:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9093,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "22707:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int176_$",
                                "typeString": "type(int176)"
                              },
                              "typeName": {
                                "id": 9092,
                                "name": "int176",
                                "nodeType": "ElementaryTypeName",
                                "src": "22707:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22707:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int176",
                              "typeString": "int176"
                            }
                          },
                          "src": "22694:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int176",
                            "typeString": "int176"
                          }
                        },
                        "id": 9097,
                        "nodeType": "ExpressionStatement",
                        "src": "22694:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9098,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9089,
                            "src": "22734:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int176",
                              "typeString": "int176"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9099,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9086,
                            "src": "22748:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "22734:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9107,
                        "nodeType": "IfStatement",
                        "src": "22730:98:24",
                        "trueBody": {
                          "id": 9106,
                          "nodeType": "Block",
                          "src": "22755:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313736",
                                    "id": 9102,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "22806:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_176_by_1",
                                      "typeString": "int_const 176"
                                    },
                                    "value": "176"
                                  },
                                  {
                                    "id": 9103,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9086,
                                    "src": "22811:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_176_by_1",
                                      "typeString": "int_const 176"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9101,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "22776:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "22776:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9105,
                              "nodeType": "RevertStatement",
                              "src": "22769:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9084,
                    "nodeType": "StructuredDocumentation",
                    "src": "22293:312:24",
                    "text": " @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"
                  },
                  "id": 9109,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt176",
                  "nameLocation": "22619:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9086,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "22635:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9109,
                        "src": "22628:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9085,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22628:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22627:14:24"
                  },
                  "returnParameters": {
                    "id": 9090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9089,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "22672:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9109,
                        "src": "22665:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int176",
                          "typeString": "int176"
                        },
                        "typeName": {
                          "id": 9088,
                          "name": "int176",
                          "nodeType": "ElementaryTypeName",
                          "src": "22665:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int176",
                            "typeString": "int176"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22664:19:24"
                  },
                  "scope": 9696,
                  "src": "22610:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9134,
                    "nodeType": "Block",
                    "src": "23231:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9117,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9115,
                            "src": "23241:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int168",
                              "typeString": "int168"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9120,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9112,
                                "src": "23261:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23254:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int168_$",
                                "typeString": "type(int168)"
                              },
                              "typeName": {
                                "id": 9118,
                                "name": "int168",
                                "nodeType": "ElementaryTypeName",
                                "src": "23254:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23254:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int168",
                              "typeString": "int168"
                            }
                          },
                          "src": "23241:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int168",
                            "typeString": "int168"
                          }
                        },
                        "id": 9123,
                        "nodeType": "ExpressionStatement",
                        "src": "23241:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9124,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9115,
                            "src": "23281:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int168",
                              "typeString": "int168"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9125,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9112,
                            "src": "23295:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "23281:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9133,
                        "nodeType": "IfStatement",
                        "src": "23277:98:24",
                        "trueBody": {
                          "id": 9132,
                          "nodeType": "Block",
                          "src": "23302:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313638",
                                    "id": 9128,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23353:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_168_by_1",
                                      "typeString": "int_const 168"
                                    },
                                    "value": "168"
                                  },
                                  {
                                    "id": 9129,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9112,
                                    "src": "23358:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_168_by_1",
                                      "typeString": "int_const 168"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9127,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "23323:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23323:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9131,
                              "nodeType": "RevertStatement",
                              "src": "23316:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9110,
                    "nodeType": "StructuredDocumentation",
                    "src": "22840:312:24",
                    "text": " @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"
                  },
                  "id": 9135,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt168",
                  "nameLocation": "23166:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9113,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9112,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "23182:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9135,
                        "src": "23175:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9111,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23175:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23174:14:24"
                  },
                  "returnParameters": {
                    "id": 9116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9115,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "23219:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9135,
                        "src": "23212:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int168",
                          "typeString": "int168"
                        },
                        "typeName": {
                          "id": 9114,
                          "name": "int168",
                          "nodeType": "ElementaryTypeName",
                          "src": "23212:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int168",
                            "typeString": "int168"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23211:19:24"
                  },
                  "scope": 9696,
                  "src": "23157:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9160,
                    "nodeType": "Block",
                    "src": "23778:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9143,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9141,
                            "src": "23788:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int160",
                              "typeString": "int160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9146,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9138,
                                "src": "23808:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "23801:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int160_$",
                                "typeString": "type(int160)"
                              },
                              "typeName": {
                                "id": 9144,
                                "name": "int160",
                                "nodeType": "ElementaryTypeName",
                                "src": "23801:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23801:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int160",
                              "typeString": "int160"
                            }
                          },
                          "src": "23788:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int160",
                            "typeString": "int160"
                          }
                        },
                        "id": 9149,
                        "nodeType": "ExpressionStatement",
                        "src": "23788:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9150,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9141,
                            "src": "23828:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int160",
                              "typeString": "int160"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9151,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9138,
                            "src": "23842:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "23828:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9159,
                        "nodeType": "IfStatement",
                        "src": "23824:98:24",
                        "trueBody": {
                          "id": 9158,
                          "nodeType": "Block",
                          "src": "23849:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313630",
                                    "id": 9154,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23900:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_160_by_1",
                                      "typeString": "int_const 160"
                                    },
                                    "value": "160"
                                  },
                                  {
                                    "id": 9155,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9138,
                                    "src": "23905:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_160_by_1",
                                      "typeString": "int_const 160"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9153,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "23870:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9156,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23870:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9157,
                              "nodeType": "RevertStatement",
                              "src": "23863:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9136,
                    "nodeType": "StructuredDocumentation",
                    "src": "23387:312:24",
                    "text": " @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"
                  },
                  "id": 9161,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt160",
                  "nameLocation": "23713:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9138,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "23729:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9161,
                        "src": "23722:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9137,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23722:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23721:14:24"
                  },
                  "returnParameters": {
                    "id": 9142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9141,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "23766:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9161,
                        "src": "23759:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int160",
                          "typeString": "int160"
                        },
                        "typeName": {
                          "id": 9140,
                          "name": "int160",
                          "nodeType": "ElementaryTypeName",
                          "src": "23759:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int160",
                            "typeString": "int160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23758:19:24"
                  },
                  "scope": 9696,
                  "src": "23704:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9186,
                    "nodeType": "Block",
                    "src": "24325:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9169,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9167,
                            "src": "24335:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int152",
                              "typeString": "int152"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9172,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9164,
                                "src": "24355:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24348:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int152_$",
                                "typeString": "type(int152)"
                              },
                              "typeName": {
                                "id": 9170,
                                "name": "int152",
                                "nodeType": "ElementaryTypeName",
                                "src": "24348:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24348:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int152",
                              "typeString": "int152"
                            }
                          },
                          "src": "24335:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int152",
                            "typeString": "int152"
                          }
                        },
                        "id": 9175,
                        "nodeType": "ExpressionStatement",
                        "src": "24335:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9176,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9167,
                            "src": "24375:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int152",
                              "typeString": "int152"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9177,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9164,
                            "src": "24389:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "24375:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9185,
                        "nodeType": "IfStatement",
                        "src": "24371:98:24",
                        "trueBody": {
                          "id": 9184,
                          "nodeType": "Block",
                          "src": "24396:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313532",
                                    "id": 9180,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24447:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_152_by_1",
                                      "typeString": "int_const 152"
                                    },
                                    "value": "152"
                                  },
                                  {
                                    "id": 9181,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9164,
                                    "src": "24452:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_152_by_1",
                                      "typeString": "int_const 152"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9179,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "24417:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24417:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9183,
                              "nodeType": "RevertStatement",
                              "src": "24410:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9162,
                    "nodeType": "StructuredDocumentation",
                    "src": "23934:312:24",
                    "text": " @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"
                  },
                  "id": 9187,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt152",
                  "nameLocation": "24260:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9165,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9164,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "24276:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9187,
                        "src": "24269:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9163,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24269:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24268:14:24"
                  },
                  "returnParameters": {
                    "id": 9168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9167,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "24313:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9187,
                        "src": "24306:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int152",
                          "typeString": "int152"
                        },
                        "typeName": {
                          "id": 9166,
                          "name": "int152",
                          "nodeType": "ElementaryTypeName",
                          "src": "24306:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int152",
                            "typeString": "int152"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24305:19:24"
                  },
                  "scope": 9696,
                  "src": "24251:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9212,
                    "nodeType": "Block",
                    "src": "24872:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9195,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9193,
                            "src": "24882:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int144",
                              "typeString": "int144"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9198,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9190,
                                "src": "24902:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "24895:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int144_$",
                                "typeString": "type(int144)"
                              },
                              "typeName": {
                                "id": 9196,
                                "name": "int144",
                                "nodeType": "ElementaryTypeName",
                                "src": "24895:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24895:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int144",
                              "typeString": "int144"
                            }
                          },
                          "src": "24882:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int144",
                            "typeString": "int144"
                          }
                        },
                        "id": 9201,
                        "nodeType": "ExpressionStatement",
                        "src": "24882:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9202,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9193,
                            "src": "24922:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int144",
                              "typeString": "int144"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9203,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9190,
                            "src": "24936:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "24922:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9211,
                        "nodeType": "IfStatement",
                        "src": "24918:98:24",
                        "trueBody": {
                          "id": 9210,
                          "nodeType": "Block",
                          "src": "24943:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313434",
                                    "id": 9206,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24994:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_144_by_1",
                                      "typeString": "int_const 144"
                                    },
                                    "value": "144"
                                  },
                                  {
                                    "id": 9207,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9190,
                                    "src": "24999:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_144_by_1",
                                      "typeString": "int_const 144"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9205,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "24964:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24964:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9209,
                              "nodeType": "RevertStatement",
                              "src": "24957:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9188,
                    "nodeType": "StructuredDocumentation",
                    "src": "24481:312:24",
                    "text": " @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"
                  },
                  "id": 9213,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt144",
                  "nameLocation": "24807:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9190,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "24823:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9213,
                        "src": "24816:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9189,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24816:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24815:14:24"
                  },
                  "returnParameters": {
                    "id": 9194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9193,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "24860:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9213,
                        "src": "24853:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int144",
                          "typeString": "int144"
                        },
                        "typeName": {
                          "id": 9192,
                          "name": "int144",
                          "nodeType": "ElementaryTypeName",
                          "src": "24853:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int144",
                            "typeString": "int144"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24852:19:24"
                  },
                  "scope": 9696,
                  "src": "24798:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9238,
                    "nodeType": "Block",
                    "src": "25419:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9221,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9219,
                            "src": "25429:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int136",
                              "typeString": "int136"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9224,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9216,
                                "src": "25449:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "25442:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int136_$",
                                "typeString": "type(int136)"
                              },
                              "typeName": {
                                "id": 9222,
                                "name": "int136",
                                "nodeType": "ElementaryTypeName",
                                "src": "25442:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25442:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int136",
                              "typeString": "int136"
                            }
                          },
                          "src": "25429:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int136",
                            "typeString": "int136"
                          }
                        },
                        "id": 9227,
                        "nodeType": "ExpressionStatement",
                        "src": "25429:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9228,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9219,
                            "src": "25469:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int136",
                              "typeString": "int136"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9229,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9216,
                            "src": "25483:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "25469:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9237,
                        "nodeType": "IfStatement",
                        "src": "25465:98:24",
                        "trueBody": {
                          "id": 9236,
                          "nodeType": "Block",
                          "src": "25490:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313336",
                                    "id": 9232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "25541:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_136_by_1",
                                      "typeString": "int_const 136"
                                    },
                                    "value": "136"
                                  },
                                  {
                                    "id": 9233,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9216,
                                    "src": "25546:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_136_by_1",
                                      "typeString": "int_const 136"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9231,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "25511:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25511:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9235,
                              "nodeType": "RevertStatement",
                              "src": "25504:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9214,
                    "nodeType": "StructuredDocumentation",
                    "src": "25028:312:24",
                    "text": " @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"
                  },
                  "id": 9239,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt136",
                  "nameLocation": "25354:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9216,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "25370:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9239,
                        "src": "25363:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9215,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25363:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25362:14:24"
                  },
                  "returnParameters": {
                    "id": 9220,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9219,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "25407:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9239,
                        "src": "25400:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int136",
                          "typeString": "int136"
                        },
                        "typeName": {
                          "id": 9218,
                          "name": "int136",
                          "nodeType": "ElementaryTypeName",
                          "src": "25400:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int136",
                            "typeString": "int136"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25399:19:24"
                  },
                  "scope": 9696,
                  "src": "25345:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9264,
                    "nodeType": "Block",
                    "src": "25966:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9247,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9245,
                            "src": "25976:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9250,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9242,
                                "src": "25996:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "25989:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int128_$",
                                "typeString": "type(int128)"
                              },
                              "typeName": {
                                "id": 9248,
                                "name": "int128",
                                "nodeType": "ElementaryTypeName",
                                "src": "25989:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25989:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "src": "25976:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "id": 9253,
                        "nodeType": "ExpressionStatement",
                        "src": "25976:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9254,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9245,
                            "src": "26016:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9255,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9242,
                            "src": "26030:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "26016:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9263,
                        "nodeType": "IfStatement",
                        "src": "26012:98:24",
                        "trueBody": {
                          "id": 9262,
                          "nodeType": "Block",
                          "src": "26037:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313238",
                                    "id": 9258,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26088:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  {
                                    "id": 9259,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9242,
                                    "src": "26093:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9257,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "26058:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26058:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9261,
                              "nodeType": "RevertStatement",
                              "src": "26051:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9240,
                    "nodeType": "StructuredDocumentation",
                    "src": "25575:312:24",
                    "text": " @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"
                  },
                  "id": 9265,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt128",
                  "nameLocation": "25901:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9243,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9242,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "25917:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9265,
                        "src": "25910:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9241,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25910:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25909:14:24"
                  },
                  "returnParameters": {
                    "id": 9246,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9245,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "25954:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9265,
                        "src": "25947:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 9244,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "25947:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25946:19:24"
                  },
                  "scope": 9696,
                  "src": "25892:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9290,
                    "nodeType": "Block",
                    "src": "26513:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9273,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9271,
                            "src": "26523:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int120",
                              "typeString": "int120"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9276,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9268,
                                "src": "26543:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9275,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "26536:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int120_$",
                                "typeString": "type(int120)"
                              },
                              "typeName": {
                                "id": 9274,
                                "name": "int120",
                                "nodeType": "ElementaryTypeName",
                                "src": "26536:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26536:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int120",
                              "typeString": "int120"
                            }
                          },
                          "src": "26523:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int120",
                            "typeString": "int120"
                          }
                        },
                        "id": 9279,
                        "nodeType": "ExpressionStatement",
                        "src": "26523:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9280,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9271,
                            "src": "26563:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int120",
                              "typeString": "int120"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9281,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9268,
                            "src": "26577:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "26563:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9289,
                        "nodeType": "IfStatement",
                        "src": "26559:98:24",
                        "trueBody": {
                          "id": 9288,
                          "nodeType": "Block",
                          "src": "26584:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313230",
                                    "id": 9284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "26635:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_120_by_1",
                                      "typeString": "int_const 120"
                                    },
                                    "value": "120"
                                  },
                                  {
                                    "id": 9285,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9268,
                                    "src": "26640:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_120_by_1",
                                      "typeString": "int_const 120"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9283,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "26605:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "26605:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9287,
                              "nodeType": "RevertStatement",
                              "src": "26598:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9266,
                    "nodeType": "StructuredDocumentation",
                    "src": "26122:312:24",
                    "text": " @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"
                  },
                  "id": 9291,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt120",
                  "nameLocation": "26448:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9268,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "26464:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9291,
                        "src": "26457:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9267,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26457:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26456:14:24"
                  },
                  "returnParameters": {
                    "id": 9272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9271,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "26501:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9291,
                        "src": "26494:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int120",
                          "typeString": "int120"
                        },
                        "typeName": {
                          "id": 9270,
                          "name": "int120",
                          "nodeType": "ElementaryTypeName",
                          "src": "26494:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int120",
                            "typeString": "int120"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26493:19:24"
                  },
                  "scope": 9696,
                  "src": "26439:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9316,
                    "nodeType": "Block",
                    "src": "27060:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9299,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9297,
                            "src": "27070:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int112",
                              "typeString": "int112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9302,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9294,
                                "src": "27090:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27083:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int112_$",
                                "typeString": "type(int112)"
                              },
                              "typeName": {
                                "id": 9300,
                                "name": "int112",
                                "nodeType": "ElementaryTypeName",
                                "src": "27083:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9303,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27083:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int112",
                              "typeString": "int112"
                            }
                          },
                          "src": "27070:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int112",
                            "typeString": "int112"
                          }
                        },
                        "id": 9305,
                        "nodeType": "ExpressionStatement",
                        "src": "27070:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9306,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9297,
                            "src": "27110:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int112",
                              "typeString": "int112"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9307,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9294,
                            "src": "27124:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "27110:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9315,
                        "nodeType": "IfStatement",
                        "src": "27106:98:24",
                        "trueBody": {
                          "id": 9314,
                          "nodeType": "Block",
                          "src": "27131:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313132",
                                    "id": 9310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27182:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_112_by_1",
                                      "typeString": "int_const 112"
                                    },
                                    "value": "112"
                                  },
                                  {
                                    "id": 9311,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9294,
                                    "src": "27187:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_112_by_1",
                                      "typeString": "int_const 112"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9309,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "27152:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27152:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9313,
                              "nodeType": "RevertStatement",
                              "src": "27145:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9292,
                    "nodeType": "StructuredDocumentation",
                    "src": "26669:312:24",
                    "text": " @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"
                  },
                  "id": 9317,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt112",
                  "nameLocation": "26995:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9295,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9294,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "27011:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9317,
                        "src": "27004:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9293,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27004:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27003:14:24"
                  },
                  "returnParameters": {
                    "id": 9298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9297,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "27048:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9317,
                        "src": "27041:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int112",
                          "typeString": "int112"
                        },
                        "typeName": {
                          "id": 9296,
                          "name": "int112",
                          "nodeType": "ElementaryTypeName",
                          "src": "27041:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int112",
                            "typeString": "int112"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27040:19:24"
                  },
                  "scope": 9696,
                  "src": "26986:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9342,
                    "nodeType": "Block",
                    "src": "27607:150:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9325,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9323,
                            "src": "27617:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int104",
                              "typeString": "int104"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9328,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9320,
                                "src": "27637:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "27630:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int104_$",
                                "typeString": "type(int104)"
                              },
                              "typeName": {
                                "id": 9326,
                                "name": "int104",
                                "nodeType": "ElementaryTypeName",
                                "src": "27630:6:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27630:13:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int104",
                              "typeString": "int104"
                            }
                          },
                          "src": "27617:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int104",
                            "typeString": "int104"
                          }
                        },
                        "id": 9331,
                        "nodeType": "ExpressionStatement",
                        "src": "27617:26:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9332,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9323,
                            "src": "27657:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int104",
                              "typeString": "int104"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9333,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9320,
                            "src": "27671:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "27657:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9341,
                        "nodeType": "IfStatement",
                        "src": "27653:98:24",
                        "trueBody": {
                          "id": 9340,
                          "nodeType": "Block",
                          "src": "27678:73:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "313034",
                                    "id": 9336,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "27729:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_104_by_1",
                                      "typeString": "int_const 104"
                                    },
                                    "value": "104"
                                  },
                                  {
                                    "id": 9337,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9320,
                                    "src": "27734:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_104_by_1",
                                      "typeString": "int_const 104"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9335,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "27699:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "27699:41:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9339,
                              "nodeType": "RevertStatement",
                              "src": "27692:48:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9318,
                    "nodeType": "StructuredDocumentation",
                    "src": "27216:312:24",
                    "text": " @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"
                  },
                  "id": 9343,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt104",
                  "nameLocation": "27542:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9320,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "27558:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9343,
                        "src": "27551:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9319,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27551:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27550:14:24"
                  },
                  "returnParameters": {
                    "id": 9324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9323,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "27595:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9343,
                        "src": "27588:17:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int104",
                          "typeString": "int104"
                        },
                        "typeName": {
                          "id": 9322,
                          "name": "int104",
                          "nodeType": "ElementaryTypeName",
                          "src": "27588:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int104",
                            "typeString": "int104"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27587:19:24"
                  },
                  "scope": 9696,
                  "src": "27533:224:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9368,
                    "nodeType": "Block",
                    "src": "28147:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9351,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9349,
                            "src": "28157:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int96",
                              "typeString": "int96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9354,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9346,
                                "src": "28176:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "28170:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int96_$",
                                "typeString": "type(int96)"
                              },
                              "typeName": {
                                "id": 9352,
                                "name": "int96",
                                "nodeType": "ElementaryTypeName",
                                "src": "28170:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28170:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int96",
                              "typeString": "int96"
                            }
                          },
                          "src": "28157:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int96",
                            "typeString": "int96"
                          }
                        },
                        "id": 9357,
                        "nodeType": "ExpressionStatement",
                        "src": "28157:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9358,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9349,
                            "src": "28196:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int96",
                              "typeString": "int96"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9359,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9346,
                            "src": "28210:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "28196:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9367,
                        "nodeType": "IfStatement",
                        "src": "28192:97:24",
                        "trueBody": {
                          "id": 9366,
                          "nodeType": "Block",
                          "src": "28217:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3936",
                                    "id": 9362,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "28268:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    "value": "96"
                                  },
                                  {
                                    "id": 9363,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9346,
                                    "src": "28272:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_96_by_1",
                                      "typeString": "int_const 96"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9361,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "28238:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9364,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28238:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9365,
                              "nodeType": "RevertStatement",
                              "src": "28231:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9344,
                    "nodeType": "StructuredDocumentation",
                    "src": "27763:307:24",
                    "text": " @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"
                  },
                  "id": 9369,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt96",
                  "nameLocation": "28084:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9346,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "28099:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9369,
                        "src": "28092:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9345,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28092:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28091:14:24"
                  },
                  "returnParameters": {
                    "id": 9350,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9349,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "28135:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9369,
                        "src": "28129:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int96",
                          "typeString": "int96"
                        },
                        "typeName": {
                          "id": 9348,
                          "name": "int96",
                          "nodeType": "ElementaryTypeName",
                          "src": "28129:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int96",
                            "typeString": "int96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28128:18:24"
                  },
                  "scope": 9696,
                  "src": "28075:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9394,
                    "nodeType": "Block",
                    "src": "28685:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9377,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9375,
                            "src": "28695:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int88",
                              "typeString": "int88"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9380,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9372,
                                "src": "28714:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "28708:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int88_$",
                                "typeString": "type(int88)"
                              },
                              "typeName": {
                                "id": 9378,
                                "name": "int88",
                                "nodeType": "ElementaryTypeName",
                                "src": "28708:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "28708:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int88",
                              "typeString": "int88"
                            }
                          },
                          "src": "28695:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int88",
                            "typeString": "int88"
                          }
                        },
                        "id": 9383,
                        "nodeType": "ExpressionStatement",
                        "src": "28695:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9384,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9375,
                            "src": "28734:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int88",
                              "typeString": "int88"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9385,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9372,
                            "src": "28748:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "28734:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9393,
                        "nodeType": "IfStatement",
                        "src": "28730:97:24",
                        "trueBody": {
                          "id": 9392,
                          "nodeType": "Block",
                          "src": "28755:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3838",
                                    "id": 9388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "28806:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_88_by_1",
                                      "typeString": "int_const 88"
                                    },
                                    "value": "88"
                                  },
                                  {
                                    "id": 9389,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9372,
                                    "src": "28810:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_88_by_1",
                                      "typeString": "int_const 88"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9387,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "28776:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28776:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9391,
                              "nodeType": "RevertStatement",
                              "src": "28769:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9370,
                    "nodeType": "StructuredDocumentation",
                    "src": "28301:307:24",
                    "text": " @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"
                  },
                  "id": 9395,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt88",
                  "nameLocation": "28622:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9373,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9372,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "28637:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9395,
                        "src": "28630:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9371,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "28630:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28629:14:24"
                  },
                  "returnParameters": {
                    "id": 9376,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9375,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "28673:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9395,
                        "src": "28667:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int88",
                          "typeString": "int88"
                        },
                        "typeName": {
                          "id": 9374,
                          "name": "int88",
                          "nodeType": "ElementaryTypeName",
                          "src": "28667:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int88",
                            "typeString": "int88"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28666:18:24"
                  },
                  "scope": 9696,
                  "src": "28613:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9420,
                    "nodeType": "Block",
                    "src": "29223:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9403,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9401,
                            "src": "29233:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int80",
                              "typeString": "int80"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9406,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9398,
                                "src": "29252:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "29246:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int80_$",
                                "typeString": "type(int80)"
                              },
                              "typeName": {
                                "id": 9404,
                                "name": "int80",
                                "nodeType": "ElementaryTypeName",
                                "src": "29246:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29246:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int80",
                              "typeString": "int80"
                            }
                          },
                          "src": "29233:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int80",
                            "typeString": "int80"
                          }
                        },
                        "id": 9409,
                        "nodeType": "ExpressionStatement",
                        "src": "29233:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9410,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9401,
                            "src": "29272:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int80",
                              "typeString": "int80"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9411,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9398,
                            "src": "29286:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "29272:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9419,
                        "nodeType": "IfStatement",
                        "src": "29268:97:24",
                        "trueBody": {
                          "id": 9418,
                          "nodeType": "Block",
                          "src": "29293:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3830",
                                    "id": 9414,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "29344:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_80_by_1",
                                      "typeString": "int_const 80"
                                    },
                                    "value": "80"
                                  },
                                  {
                                    "id": 9415,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9398,
                                    "src": "29348:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_80_by_1",
                                      "typeString": "int_const 80"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9413,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "29314:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29314:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9417,
                              "nodeType": "RevertStatement",
                              "src": "29307:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9396,
                    "nodeType": "StructuredDocumentation",
                    "src": "28839:307:24",
                    "text": " @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"
                  },
                  "id": 9421,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt80",
                  "nameLocation": "29160:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9398,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "29175:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9421,
                        "src": "29168:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9397,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29168:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29167:14:24"
                  },
                  "returnParameters": {
                    "id": 9402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9401,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "29211:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9421,
                        "src": "29205:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int80",
                          "typeString": "int80"
                        },
                        "typeName": {
                          "id": 9400,
                          "name": "int80",
                          "nodeType": "ElementaryTypeName",
                          "src": "29205:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int80",
                            "typeString": "int80"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29204:18:24"
                  },
                  "scope": 9696,
                  "src": "29151:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9446,
                    "nodeType": "Block",
                    "src": "29761:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9429,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9427,
                            "src": "29771:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int72",
                              "typeString": "int72"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9432,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9424,
                                "src": "29790:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "29784:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int72_$",
                                "typeString": "type(int72)"
                              },
                              "typeName": {
                                "id": 9430,
                                "name": "int72",
                                "nodeType": "ElementaryTypeName",
                                "src": "29784:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "29784:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int72",
                              "typeString": "int72"
                            }
                          },
                          "src": "29771:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int72",
                            "typeString": "int72"
                          }
                        },
                        "id": 9435,
                        "nodeType": "ExpressionStatement",
                        "src": "29771:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9436,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9427,
                            "src": "29810:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int72",
                              "typeString": "int72"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9437,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9424,
                            "src": "29824:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "29810:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9445,
                        "nodeType": "IfStatement",
                        "src": "29806:97:24",
                        "trueBody": {
                          "id": 9444,
                          "nodeType": "Block",
                          "src": "29831:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3732",
                                    "id": 9440,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "29882:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_72_by_1",
                                      "typeString": "int_const 72"
                                    },
                                    "value": "72"
                                  },
                                  {
                                    "id": 9441,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9424,
                                    "src": "29886:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_72_by_1",
                                      "typeString": "int_const 72"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9439,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "29852:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29852:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9443,
                              "nodeType": "RevertStatement",
                              "src": "29845:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9422,
                    "nodeType": "StructuredDocumentation",
                    "src": "29377:307:24",
                    "text": " @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"
                  },
                  "id": 9447,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt72",
                  "nameLocation": "29698:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9424,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "29713:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9447,
                        "src": "29706:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9423,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "29706:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29705:14:24"
                  },
                  "returnParameters": {
                    "id": 9428,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9427,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "29749:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9447,
                        "src": "29743:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int72",
                          "typeString": "int72"
                        },
                        "typeName": {
                          "id": 9426,
                          "name": "int72",
                          "nodeType": "ElementaryTypeName",
                          "src": "29743:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int72",
                            "typeString": "int72"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29742:18:24"
                  },
                  "scope": 9696,
                  "src": "29689:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9472,
                    "nodeType": "Block",
                    "src": "30299:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9455,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9453,
                            "src": "30309:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9458,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9450,
                                "src": "30328:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30322:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int64_$",
                                "typeString": "type(int64)"
                              },
                              "typeName": {
                                "id": 9456,
                                "name": "int64",
                                "nodeType": "ElementaryTypeName",
                                "src": "30322:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30322:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          },
                          "src": "30309:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int64",
                            "typeString": "int64"
                          }
                        },
                        "id": 9461,
                        "nodeType": "ExpressionStatement",
                        "src": "30309:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9462,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9453,
                            "src": "30348:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int64",
                              "typeString": "int64"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9463,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9450,
                            "src": "30362:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "30348:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9471,
                        "nodeType": "IfStatement",
                        "src": "30344:97:24",
                        "trueBody": {
                          "id": 9470,
                          "nodeType": "Block",
                          "src": "30369:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3634",
                                    "id": 9466,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30420:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    "value": "64"
                                  },
                                  {
                                    "id": 9467,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9450,
                                    "src": "30424:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_64_by_1",
                                      "typeString": "int_const 64"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9465,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "30390:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30390:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9469,
                              "nodeType": "RevertStatement",
                              "src": "30383:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9448,
                    "nodeType": "StructuredDocumentation",
                    "src": "29915:307:24",
                    "text": " @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"
                  },
                  "id": 9473,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt64",
                  "nameLocation": "30236:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9451,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9450,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "30251:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9473,
                        "src": "30244:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9449,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30244:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30243:14:24"
                  },
                  "returnParameters": {
                    "id": 9454,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9453,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "30287:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9473,
                        "src": "30281:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int64",
                          "typeString": "int64"
                        },
                        "typeName": {
                          "id": 9452,
                          "name": "int64",
                          "nodeType": "ElementaryTypeName",
                          "src": "30281:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int64",
                            "typeString": "int64"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30280:18:24"
                  },
                  "scope": 9696,
                  "src": "30227:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9498,
                    "nodeType": "Block",
                    "src": "30837:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9481,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9479,
                            "src": "30847:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int56",
                              "typeString": "int56"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9484,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9476,
                                "src": "30866:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "30860:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int56_$",
                                "typeString": "type(int56)"
                              },
                              "typeName": {
                                "id": 9482,
                                "name": "int56",
                                "nodeType": "ElementaryTypeName",
                                "src": "30860:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "30860:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int56",
                              "typeString": "int56"
                            }
                          },
                          "src": "30847:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int56",
                            "typeString": "int56"
                          }
                        },
                        "id": 9487,
                        "nodeType": "ExpressionStatement",
                        "src": "30847:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9488,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9479,
                            "src": "30886:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int56",
                              "typeString": "int56"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9489,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9476,
                            "src": "30900:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "30886:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9497,
                        "nodeType": "IfStatement",
                        "src": "30882:97:24",
                        "trueBody": {
                          "id": 9496,
                          "nodeType": "Block",
                          "src": "30907:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3536",
                                    "id": 9492,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "30958:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_56_by_1",
                                      "typeString": "int_const 56"
                                    },
                                    "value": "56"
                                  },
                                  {
                                    "id": 9493,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9476,
                                    "src": "30962:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_56_by_1",
                                      "typeString": "int_const 56"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9491,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "30928:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30928:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9495,
                              "nodeType": "RevertStatement",
                              "src": "30921:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9474,
                    "nodeType": "StructuredDocumentation",
                    "src": "30453:307:24",
                    "text": " @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"
                  },
                  "id": 9499,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt56",
                  "nameLocation": "30774:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9476,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "30789:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9499,
                        "src": "30782:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9475,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "30782:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30781:14:24"
                  },
                  "returnParameters": {
                    "id": 9480,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9479,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "30825:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9499,
                        "src": "30819:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int56",
                          "typeString": "int56"
                        },
                        "typeName": {
                          "id": 9478,
                          "name": "int56",
                          "nodeType": "ElementaryTypeName",
                          "src": "30819:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int56",
                            "typeString": "int56"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30818:18:24"
                  },
                  "scope": 9696,
                  "src": "30765:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9524,
                    "nodeType": "Block",
                    "src": "31375:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9507,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9505,
                            "src": "31385:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int48",
                              "typeString": "int48"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9510,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9502,
                                "src": "31404:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "31398:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int48_$",
                                "typeString": "type(int48)"
                              },
                              "typeName": {
                                "id": 9508,
                                "name": "int48",
                                "nodeType": "ElementaryTypeName",
                                "src": "31398:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31398:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int48",
                              "typeString": "int48"
                            }
                          },
                          "src": "31385:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int48",
                            "typeString": "int48"
                          }
                        },
                        "id": 9513,
                        "nodeType": "ExpressionStatement",
                        "src": "31385:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9514,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9505,
                            "src": "31424:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int48",
                              "typeString": "int48"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9515,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9502,
                            "src": "31438:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "31424:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9523,
                        "nodeType": "IfStatement",
                        "src": "31420:97:24",
                        "trueBody": {
                          "id": 9522,
                          "nodeType": "Block",
                          "src": "31445:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3438",
                                    "id": 9518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "31496:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    "value": "48"
                                  },
                                  {
                                    "id": 9519,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9502,
                                    "src": "31500:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_48_by_1",
                                      "typeString": "int_const 48"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9517,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "31466:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "31466:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9521,
                              "nodeType": "RevertStatement",
                              "src": "31459:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9500,
                    "nodeType": "StructuredDocumentation",
                    "src": "30991:307:24",
                    "text": " @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"
                  },
                  "id": 9525,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt48",
                  "nameLocation": "31312:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9502,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "31327:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9525,
                        "src": "31320:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9501,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31320:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31319:14:24"
                  },
                  "returnParameters": {
                    "id": 9506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9505,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "31363:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9525,
                        "src": "31357:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int48",
                          "typeString": "int48"
                        },
                        "typeName": {
                          "id": 9504,
                          "name": "int48",
                          "nodeType": "ElementaryTypeName",
                          "src": "31357:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int48",
                            "typeString": "int48"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31356:18:24"
                  },
                  "scope": 9696,
                  "src": "31303:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9550,
                    "nodeType": "Block",
                    "src": "31913:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9533,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9531,
                            "src": "31923:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int40",
                              "typeString": "int40"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9536,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9528,
                                "src": "31942:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "31936:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int40_$",
                                "typeString": "type(int40)"
                              },
                              "typeName": {
                                "id": 9534,
                                "name": "int40",
                                "nodeType": "ElementaryTypeName",
                                "src": "31936:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9537,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "31936:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int40",
                              "typeString": "int40"
                            }
                          },
                          "src": "31923:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int40",
                            "typeString": "int40"
                          }
                        },
                        "id": 9539,
                        "nodeType": "ExpressionStatement",
                        "src": "31923:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9540,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9531,
                            "src": "31962:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int40",
                              "typeString": "int40"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9541,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9528,
                            "src": "31976:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "31962:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9549,
                        "nodeType": "IfStatement",
                        "src": "31958:97:24",
                        "trueBody": {
                          "id": 9548,
                          "nodeType": "Block",
                          "src": "31983:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3430",
                                    "id": 9544,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "32034:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_40_by_1",
                                      "typeString": "int_const 40"
                                    },
                                    "value": "40"
                                  },
                                  {
                                    "id": 9545,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9528,
                                    "src": "32038:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_40_by_1",
                                      "typeString": "int_const 40"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9543,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "32004:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9546,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32004:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9547,
                              "nodeType": "RevertStatement",
                              "src": "31997:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9526,
                    "nodeType": "StructuredDocumentation",
                    "src": "31529:307:24",
                    "text": " @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"
                  },
                  "id": 9551,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt40",
                  "nameLocation": "31850:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9528,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "31865:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9551,
                        "src": "31858:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9527,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31858:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31857:14:24"
                  },
                  "returnParameters": {
                    "id": 9532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9531,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "31901:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9551,
                        "src": "31895:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int40",
                          "typeString": "int40"
                        },
                        "typeName": {
                          "id": 9530,
                          "name": "int40",
                          "nodeType": "ElementaryTypeName",
                          "src": "31895:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int40",
                            "typeString": "int40"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31894:18:24"
                  },
                  "scope": 9696,
                  "src": "31841:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9576,
                    "nodeType": "Block",
                    "src": "32451:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9559,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9557,
                            "src": "32461:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9562,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9554,
                                "src": "32480:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "32474:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int32_$",
                                "typeString": "type(int32)"
                              },
                              "typeName": {
                                "id": 9560,
                                "name": "int32",
                                "nodeType": "ElementaryTypeName",
                                "src": "32474:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "32474:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "src": "32461:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 9565,
                        "nodeType": "ExpressionStatement",
                        "src": "32461:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9566,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9557,
                            "src": "32500:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9567,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9554,
                            "src": "32514:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "32500:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9575,
                        "nodeType": "IfStatement",
                        "src": "32496:97:24",
                        "trueBody": {
                          "id": 9574,
                          "nodeType": "Block",
                          "src": "32521:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3332",
                                    "id": 9570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "32572:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    "value": "32"
                                  },
                                  {
                                    "id": 9571,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9554,
                                    "src": "32576:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_32_by_1",
                                      "typeString": "int_const 32"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9569,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "32542:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32542:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9573,
                              "nodeType": "RevertStatement",
                              "src": "32535:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9552,
                    "nodeType": "StructuredDocumentation",
                    "src": "32067:307:24",
                    "text": " @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"
                  },
                  "id": 9577,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt32",
                  "nameLocation": "32388:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9554,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "32403:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9577,
                        "src": "32396:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9553,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "32396:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32395:14:24"
                  },
                  "returnParameters": {
                    "id": 9558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9557,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "32439:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9577,
                        "src": "32433:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int32",
                          "typeString": "int32"
                        },
                        "typeName": {
                          "id": 9556,
                          "name": "int32",
                          "nodeType": "ElementaryTypeName",
                          "src": "32433:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32432:18:24"
                  },
                  "scope": 9696,
                  "src": "32379:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9602,
                    "nodeType": "Block",
                    "src": "32989:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9585,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9583,
                            "src": "32999:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9588,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9580,
                                "src": "33018:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "33012:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int24_$",
                                "typeString": "type(int24)"
                              },
                              "typeName": {
                                "id": 9586,
                                "name": "int24",
                                "nodeType": "ElementaryTypeName",
                                "src": "33012:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33012:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "32999:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "id": 9591,
                        "nodeType": "ExpressionStatement",
                        "src": "32999:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9592,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9583,
                            "src": "33038:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9593,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9580,
                            "src": "33052:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "33038:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9601,
                        "nodeType": "IfStatement",
                        "src": "33034:97:24",
                        "trueBody": {
                          "id": 9600,
                          "nodeType": "Block",
                          "src": "33059:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3234",
                                    "id": 9596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33110:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_24_by_1",
                                      "typeString": "int_const 24"
                                    },
                                    "value": "24"
                                  },
                                  {
                                    "id": 9597,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9580,
                                    "src": "33114:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_24_by_1",
                                      "typeString": "int_const 24"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9595,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "33080:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33080:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9599,
                              "nodeType": "RevertStatement",
                              "src": "33073:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9578,
                    "nodeType": "StructuredDocumentation",
                    "src": "32605:307:24",
                    "text": " @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"
                  },
                  "id": 9603,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt24",
                  "nameLocation": "32926:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9580,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "32941:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9603,
                        "src": "32934:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9579,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "32934:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32933:14:24"
                  },
                  "returnParameters": {
                    "id": 9584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9583,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "32977:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9603,
                        "src": "32971:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 9582,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "32971:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32970:18:24"
                  },
                  "scope": 9696,
                  "src": "32917:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9628,
                    "nodeType": "Block",
                    "src": "33527:148:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9611,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9609,
                            "src": "33537:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int16",
                              "typeString": "int16"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9614,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9606,
                                "src": "33556:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "33550:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int16_$",
                                "typeString": "type(int16)"
                              },
                              "typeName": {
                                "id": 9612,
                                "name": "int16",
                                "nodeType": "ElementaryTypeName",
                                "src": "33550:5:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "33550:12:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int16",
                              "typeString": "int16"
                            }
                          },
                          "src": "33537:25:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int16",
                            "typeString": "int16"
                          }
                        },
                        "id": 9617,
                        "nodeType": "ExpressionStatement",
                        "src": "33537:25:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9618,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9609,
                            "src": "33576:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int16",
                              "typeString": "int16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9619,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9606,
                            "src": "33590:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "33576:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9627,
                        "nodeType": "IfStatement",
                        "src": "33572:97:24",
                        "trueBody": {
                          "id": 9626,
                          "nodeType": "Block",
                          "src": "33597:72:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "3136",
                                    "id": 9622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33648:2:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    "value": "16"
                                  },
                                  {
                                    "id": 9623,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9606,
                                    "src": "33652:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_16_by_1",
                                      "typeString": "int_const 16"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9621,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "33618:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33618:40:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9625,
                              "nodeType": "RevertStatement",
                              "src": "33611:47:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9604,
                    "nodeType": "StructuredDocumentation",
                    "src": "33143:307:24",
                    "text": " @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"
                  },
                  "id": 9629,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt16",
                  "nameLocation": "33464:7:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9606,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "33479:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9629,
                        "src": "33472:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9605,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "33472:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33471:14:24"
                  },
                  "returnParameters": {
                    "id": 9610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9609,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "33515:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9629,
                        "src": "33509:16:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int16",
                          "typeString": "int16"
                        },
                        "typeName": {
                          "id": 9608,
                          "name": "int16",
                          "nodeType": "ElementaryTypeName",
                          "src": "33509:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int16",
                            "typeString": "int16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33508:18:24"
                  },
                  "scope": 9696,
                  "src": "33455:220:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9654,
                    "nodeType": "Block",
                    "src": "34058:146:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 9642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9637,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9635,
                            "src": "34068:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9640,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9632,
                                "src": "34086:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "34081:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int8_$",
                                "typeString": "type(int8)"
                              },
                              "typeName": {
                                "id": 9638,
                                "name": "int8",
                                "nodeType": "ElementaryTypeName",
                                "src": "34081:4:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34081:11:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "src": "34068:24:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "id": 9643,
                        "nodeType": "ExpressionStatement",
                        "src": "34068:24:24"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9644,
                            "name": "downcasted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9635,
                            "src": "34106:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int8",
                              "typeString": "int8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 9645,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9632,
                            "src": "34120:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "34106:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9653,
                        "nodeType": "IfStatement",
                        "src": "34102:96:24",
                        "trueBody": {
                          "id": 9652,
                          "nodeType": "Block",
                          "src": "34127:71:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "hexValue": "38",
                                    "id": 9648,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "34178:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  {
                                    "id": 9649,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9632,
                                    "src": "34181:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 9647,
                                  "name": "SafeCastOverflowedIntDowncast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7953,
                                  "src": "34148:29:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$",
                                    "typeString": "function (uint8,int256) pure returns (error)"
                                  }
                                },
                                "id": 9650,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34148:39:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9651,
                              "nodeType": "RevertStatement",
                              "src": "34141:46:24"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9630,
                    "nodeType": "StructuredDocumentation",
                    "src": "33681:302:24",
                    "text": " @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"
                  },
                  "id": 9655,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt8",
                  "nameLocation": "33997:6:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9632,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "34011:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9655,
                        "src": "34004:12:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9631,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34004:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34003:14:24"
                  },
                  "returnParameters": {
                    "id": 9636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9635,
                        "mutability": "mutable",
                        "name": "downcasted",
                        "nameLocation": "34046:10:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9655,
                        "src": "34041:15:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int8",
                          "typeString": "int8"
                        },
                        "typeName": {
                          "id": 9634,
                          "name": "int8",
                          "nodeType": "ElementaryTypeName",
                          "src": "34041:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int8",
                            "typeString": "int8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34040:17:24"
                  },
                  "scope": 9696,
                  "src": "33988:216:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9684,
                    "nodeType": "Block",
                    "src": "34444:250:24",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9663,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9658,
                            "src": "34557:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 9668,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "34578:6:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 9667,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "34578:6:24",
                                        "typeDescriptions": {}
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      }
                                    ],
                                    "id": 9666,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "34573:4:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 9669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "34573:12:24",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_int256",
                                    "typeString": "type(int256)"
                                  }
                                },
                                "id": 9670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "34586:3:24",
                                "memberName": "max",
                                "nodeType": "MemberAccess",
                                "src": "34573:16:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 9665,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "34565:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9664,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "34565:7:24",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34565:25:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "34557:33:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9678,
                        "nodeType": "IfStatement",
                        "src": "34553:105:24",
                        "trueBody": {
                          "id": 9677,
                          "nodeType": "Block",
                          "src": "34592:66:24",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 9674,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9658,
                                    "src": "34641:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9673,
                                  "name": "SafeCastOverflowedUintToInt",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7958,
                                  "src": "34613:27:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$_t_error_$",
                                    "typeString": "function (uint256) pure returns (error)"
                                  }
                                },
                                "id": 9675,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34613:34:24",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_error",
                                  "typeString": "error"
                                }
                              },
                              "id": 9676,
                              "nodeType": "RevertStatement",
                              "src": "34606:41:24"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9681,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9658,
                              "src": "34681:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "34674:6:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_int256_$",
                              "typeString": "type(int256)"
                            },
                            "typeName": {
                              "id": 9679,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34674:6:24",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 9682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34674:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 9662,
                        "id": 9683,
                        "nodeType": "Return",
                        "src": "34667:20:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9656,
                    "nodeType": "StructuredDocumentation",
                    "src": "34210:165:24",
                    "text": " @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."
                  },
                  "id": 9685,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toInt256",
                  "nameLocation": "34389:8:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9658,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "34406:5:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9685,
                        "src": "34398:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9657,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34398:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34397:15:24"
                  },
                  "returnParameters": {
                    "id": 9662,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9661,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9685,
                        "src": "34436:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9660,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34436:6:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34435:8:24"
                  },
                  "scope": 9696,
                  "src": "34380:314:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9694,
                    "nodeType": "Block",
                    "src": "34853:87:24",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "34888:46:24",
                          "nodeType": "YulBlock",
                          "src": "34888:46:24",
                          "statements": [
                            {
                              "nativeSrc": "34902:22:24",
                              "nodeType": "YulAssignment",
                              "src": "34902:22:24",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "b",
                                        "nativeSrc": "34921:1:24",
                                        "nodeType": "YulIdentifier",
                                        "src": "34921:1:24"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nativeSrc": "34914:6:24",
                                      "nodeType": "YulIdentifier",
                                      "src": "34914:6:24"
                                    },
                                    "nativeSrc": "34914:9:24",
                                    "nodeType": "YulFunctionCall",
                                    "src": "34914:9:24"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "34907:6:24",
                                  "nodeType": "YulIdentifier",
                                  "src": "34907:6:24"
                                },
                                "nativeSrc": "34907:17:24",
                                "nodeType": "YulFunctionCall",
                                "src": "34907:17:24"
                              },
                              "variableNames": [
                                {
                                  "name": "u",
                                  "nativeSrc": "34902:1:24",
                                  "nodeType": "YulIdentifier",
                                  "src": "34902:1:24"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "cancun",
                        "externalReferences": [
                          {
                            "declaration": 9688,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "34921:1:24",
                            "valueSize": 1
                          },
                          {
                            "declaration": 9691,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "34902:1:24",
                            "valueSize": 1
                          }
                        ],
                        "flags": [
                          "memory-safe"
                        ],
                        "id": 9693,
                        "nodeType": "InlineAssembly",
                        "src": "34863:71:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9686,
                    "nodeType": "StructuredDocumentation",
                    "src": "34700:90:24",
                    "text": " @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."
                  },
                  "id": 9695,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toUint",
                  "nameLocation": "34804:6:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9688,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "34816:1:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9695,
                        "src": "34811:6:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9687,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34811:4:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34810:8:24"
                  },
                  "returnParameters": {
                    "id": 9692,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9691,
                        "mutability": "mutable",
                        "name": "u",
                        "nameLocation": "34850:1:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 9695,
                        "src": "34842:9:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9690,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "34842:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34841:11:24"
                  },
                  "scope": 9696,
                  "src": "34795:145:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 9697,
              "src": "769:34173:24",
              "usedErrors": [
                7941,
                7946,
                7953,
                7958
              ],
              "usedEvents": []
            }
          ],
          "src": "192:34751:24"
        },
        "id": 24
      },
      "@openzeppelin/contracts/utils/math/SignedMath.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol",
          "exportedSymbols": {
            "SafeCast": [
              9696
            ],
            "SignedMath": [
              9840
            ]
          },
          "id": 9841,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9698,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".20"
              ],
              "nodeType": "PragmaDirective",
              "src": "109:24:25"
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol",
              "file": "./SafeCast.sol",
              "id": 9700,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9841,
              "sourceUnit": 9697,
              "src": "135:40:25",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9699,
                    "name": "SafeCast",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9696,
                    "src": "143:8:25",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SignedMath",
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 9701,
                "nodeType": "StructuredDocumentation",
                "src": "177:80:25",
                "text": " @dev Standard signed math utilities missing in the Solidity language."
              },
              "fullyImplemented": true,
              "id": 9840,
              "linearizedBaseContracts": [
                9840
              ],
              "name": "SignedMath",
              "nameLocation": "266:10:25",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 9730,
                    "nodeType": "Block",
                    "src": "746:215:25",
                    "statements": [
                      {
                        "id": 9729,
                        "nodeType": "UncheckedBlock",
                        "src": "756:199:25",
                        "statements": [
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 9727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9713,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9708,
                                "src": "894:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "^",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 9725,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          },
                                          "id": 9716,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 9714,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9706,
                                            "src": "900:1:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "^",
                                          "rightExpression": {
                                            "id": 9715,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9708,
                                            "src": "904:1:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          },
                                          "src": "900:5:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        }
                                      ],
                                      "id": 9717,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "899:7:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 9722,
                                              "name": "condition",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9704,
                                              "src": "932:9:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            ],
                                            "expression": {
                                              "id": 9720,
                                              "name": "SafeCast",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9696,
                                              "src": "916:8:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_SafeCast_$9696_$",
                                                "typeString": "type(library SafeCast)"
                                              }
                                            },
                                            "id": 9721,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberLocation": "925:6:25",
                                            "memberName": "toUint",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 9695,
                                            "src": "916:15:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$",
                                              "typeString": "function (bool) pure returns (uint256)"
                                            }
                                          },
                                          "id": 9723,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "916:26:25",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 9719,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "909:6:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 9718,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "909:6:25",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 9724,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "909:34:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "src": "899:44:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 9726,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "898:46:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "894:50:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "functionReturnParameters": 9712,
                            "id": 9728,
                            "nodeType": "Return",
                            "src": "887:57:25"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9702,
                    "nodeType": "StructuredDocumentation",
                    "src": "283:374:25",
                    "text": " @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."
                  },
                  "id": 9731,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ternary",
                  "nameLocation": "671:7:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9704,
                        "mutability": "mutable",
                        "name": "condition",
                        "nameLocation": "684:9:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9731,
                        "src": "679:14:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9703,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "679:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9706,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "702:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9731,
                        "src": "695:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9705,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "695:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9708,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "712:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9731,
                        "src": "705:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9707,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "705:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "678:36:25"
                  },
                  "returnParameters": {
                    "id": 9712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9711,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9731,
                        "src": "738:6:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9710,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "738:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "737:8:25"
                  },
                  "scope": 9840,
                  "src": "662:299:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9749,
                    "nodeType": "Block",
                    "src": "1102:44:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 9744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9742,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9734,
                                "src": "1127:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 9743,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9736,
                                "src": "1131:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "1127:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 9745,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9734,
                              "src": "1134:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "id": 9746,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9736,
                              "src": "1137:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 9741,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9731,
                            "src": "1119:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$",
                              "typeString": "function (bool,int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 9747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1119:20:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 9740,
                        "id": 9748,
                        "nodeType": "Return",
                        "src": "1112:27:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9732,
                    "nodeType": "StructuredDocumentation",
                    "src": "967:66:25",
                    "text": " @dev Returns the largest of two signed numbers."
                  },
                  "id": 9750,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "max",
                  "nameLocation": "1047:3:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9737,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9734,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1058:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9750,
                        "src": "1051:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9733,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1051:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9736,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1068:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9750,
                        "src": "1061:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9735,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1061:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1050:20:25"
                  },
                  "returnParameters": {
                    "id": 9740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9739,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9750,
                        "src": "1094:6:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9738,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1094:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1093:8:25"
                  },
                  "scope": 9840,
                  "src": "1038:108:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9768,
                    "nodeType": "Block",
                    "src": "1288:44:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 9763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9761,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9753,
                                "src": "1313:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 9762,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9755,
                                "src": "1317:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "src": "1313:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 9764,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9753,
                              "src": "1320:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            {
                              "id": 9765,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9755,
                              "src": "1323:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            ],
                            "id": 9760,
                            "name": "ternary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9731,
                            "src": "1305:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$",
                              "typeString": "function (bool,int256,int256) pure returns (int256)"
                            }
                          },
                          "id": 9766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1305:20:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 9759,
                        "id": 9767,
                        "nodeType": "Return",
                        "src": "1298:27:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9751,
                    "nodeType": "StructuredDocumentation",
                    "src": "1152:67:25",
                    "text": " @dev Returns the smallest of two signed numbers."
                  },
                  "id": 9769,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "min",
                  "nameLocation": "1233:3:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9756,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9753,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1244:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9769,
                        "src": "1237:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9752,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1237:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9755,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1254:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9769,
                        "src": "1247:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9754,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1247:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1236:20:25"
                  },
                  "returnParameters": {
                    "id": 9759,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9758,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9769,
                        "src": "1280:6:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9757,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1280:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1279:8:25"
                  },
                  "scope": 9840,
                  "src": "1224:108:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9812,
                    "nodeType": "Block",
                    "src": "1537:162:25",
                    "statements": [
                      {
                        "assignments": [
                          9780
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9780,
                            "mutability": "mutable",
                            "name": "x",
                            "nameLocation": "1606:1:25",
                            "nodeType": "VariableDeclaration",
                            "scope": 9812,
                            "src": "1599:8:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "typeName": {
                              "id": 9779,
                              "name": "int256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1599:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9793,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 9783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9781,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9772,
                                  "src": "1611:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "id": 9782,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9774,
                                  "src": "1615:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "1611:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 9784,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1610:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 9790,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 9787,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9785,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9772,
                                        "src": "1622:1:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "^",
                                      "rightExpression": {
                                        "id": 9786,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9774,
                                        "src": "1626:1:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1622:5:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 9788,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1621:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 9789,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1632:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1621:12:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 9791,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1620:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1610:24:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1599:35:25"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 9810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9794,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9780,
                            "src": "1651:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 9808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9802,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "id": 9799,
                                            "name": "x",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9780,
                                            "src": "1671:1:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int256",
                                              "typeString": "int256"
                                            }
                                          ],
                                          "id": 9798,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1663:7:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 9797,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1663:7:25",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 9800,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1663:10:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "323535",
                                        "id": 9801,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1677:3:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_255_by_1",
                                          "typeString": "int_const 255"
                                        },
                                        "value": "255"
                                      },
                                      "src": "1663:17:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 9796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1656:6:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 9795,
                                      "name": "int256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1656:6:25",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 9803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1656:25:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 9806,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9804,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9772,
                                        "src": "1685:1:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "^",
                                      "rightExpression": {
                                        "id": 9805,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9774,
                                        "src": "1689:1:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "1685:5:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "id": 9807,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1684:7:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "src": "1656:35:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "id": 9809,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "1655:37:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "1651:41:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "functionReturnParameters": 9778,
                        "id": 9811,
                        "nodeType": "Return",
                        "src": "1644:48:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9770,
                    "nodeType": "StructuredDocumentation",
                    "src": "1338:126:25",
                    "text": " @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."
                  },
                  "id": 9813,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "average",
                  "nameLocation": "1478:7:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9772,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "1493:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9813,
                        "src": "1486:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9771,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1486:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9774,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "1503:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9813,
                        "src": "1496:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9773,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1496:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1485:20:25"
                  },
                  "returnParameters": {
                    "id": 9778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9777,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9813,
                        "src": "1529:6:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9776,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1529:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1528:8:25"
                  },
                  "scope": 9840,
                  "src": "1469:230:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9838,
                    "nodeType": "Block",
                    "src": "1843:767:25",
                    "statements": [
                      {
                        "id": 9837,
                        "nodeType": "UncheckedBlock",
                        "src": "1853:751:25",
                        "statements": [
                          {
                            "assignments": [
                              9822
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 9822,
                                "mutability": "mutable",
                                "name": "mask",
                                "nameLocation": "2424:4:25",
                                "nodeType": "VariableDeclaration",
                                "scope": 9837,
                                "src": "2417:11:25",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 9821,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2417:6:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 9826,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 9825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9823,
                                "name": "n",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9816,
                                "src": "2431:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">>",
                              "rightExpression": {
                                "hexValue": "323535",
                                "id": 9824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2436:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_255_by_1",
                                  "typeString": "int_const 255"
                                },
                                "value": "255"
                              },
                              "src": "2431:8:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2417:22:25"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 9834,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 9831,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9829,
                                          "name": "n",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9816,
                                          "src": "2576:1:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 9830,
                                          "name": "mask",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9822,
                                          "src": "2580:4:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "src": "2576:8:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "id": 9832,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2575:10:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "^",
                                  "rightExpression": {
                                    "id": 9833,
                                    "name": "mask",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9822,
                                    "src": "2588:4:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "2575:17:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 9828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2567:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 9827,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2567:7:25",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 9835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2567:26:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 9820,
                            "id": 9836,
                            "nodeType": "Return",
                            "src": "2560:33:25"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9814,
                    "nodeType": "StructuredDocumentation",
                    "src": "1705:78:25",
                    "text": " @dev Returns the absolute unsigned value of a signed value."
                  },
                  "id": 9839,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "abs",
                  "nameLocation": "1797:3:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9816,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "1808:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 9839,
                        "src": "1801:8:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 9815,
                          "name": "int256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1801:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1800:10:25"
                  },
                  "returnParameters": {
                    "id": 9820,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9819,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9839,
                        "src": "1834:7:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9818,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1834:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1833:9:25"
                  },
                  "scope": 9840,
                  "src": "1788:822:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 9841,
              "src": "258:2354:25",
              "usedErrors": [],
              "usedEvents": []
            }
          ],
          "src": "109:2504:25"
        },
        "id": 25
      },
      "contracts/CustomEAS.sol": {
        "ast": {
          "absolutePath": "contracts/CustomEAS.sol",
          "exportedSymbols": {
            "CustomEAS": [
              9858
            ],
            "EAS": [
              2019
            ],
            "ISchemaRegistry": [
              2379
            ]
          },
          "id": 9859,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9842,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".26"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:26"
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/EAS.sol",
              "file": "@ethereum-attestation-service/eas-contracts/contracts/EAS.sol",
              "id": 9845,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9859,
              "sourceUnit": 2020,
              "src": "66:101:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9843,
                    "name": "EAS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2019,
                    "src": "75:3:26",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 9844,
                    "name": "ISchemaRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2379,
                    "src": "80:15:26",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9846,
                    "name": "EAS",
                    "nameLocations": [
                      "191:3:26"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2019,
                    "src": "191:3:26"
                  },
                  "id": 9847,
                  "nodeType": "InheritanceSpecifier",
                  "src": "191:3:26"
                }
              ],
              "canonicalName": "CustomEAS",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 9858,
              "linearizedBaseContracts": [
                9858,
                2019,
                2922,
                5920,
                3021,
                2588,
                2326,
                2389
              ],
              "name": "CustomEAS",
              "nameLocation": "178:9:26",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 9856,
                    "nodeType": "Block",
                    "src": "253:3:26",
                    "statements": []
                  },
                  "id": 9857,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9853,
                          "name": "registry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9850,
                          "src": "243:8:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                            "typeString": "contract ISchemaRegistry"
                          }
                        }
                      ],
                      "id": 9854,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 9852,
                        "name": "EAS",
                        "nameLocations": [
                          "239:3:26"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2019,
                        "src": "239:3:26"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "239:13:26"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9850,
                        "mutability": "mutable",
                        "name": "registry",
                        "nameLocation": "229:8:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 9857,
                        "src": "213:24:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                          "typeString": "contract ISchemaRegistry"
                        },
                        "typeName": {
                          "id": 9849,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 9848,
                            "name": "ISchemaRegistry",
                            "nameLocations": [
                              "213:15:26"
                            ],
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2379,
                            "src": "213:15:26"
                          },
                          "referencedDeclaration": 2379,
                          "src": "213:15:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ISchemaRegistry_$2379",
                            "typeString": "contract ISchemaRegistry"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "212:26:26"
                  },
                  "returnParameters": {
                    "id": 9855,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "253:0:26"
                  },
                  "scope": 9858,
                  "src": "201:55:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 9859,
              "src": "169:89:26",
              "usedErrors": [
                9,
                11,
                15,
                17,
                19,
                110,
                112,
                114,
                116,
                118,
                120,
                122,
                124,
                126,
                128,
                130,
                132,
                134,
                136,
                138,
                140,
                2614,
                3538,
                3541,
                3616,
                3618
              ],
              "usedEvents": [
                2152,
                2163,
                2170,
                2179,
                2633,
                3001
              ]
            }
          ],
          "src": "40:219:26"
        },
        "id": 26
      },
      "contracts/CustomSchemaRegistry.sol": {
        "ast": {
          "absolutePath": "contracts/CustomSchemaRegistry.sol",
          "exportedSymbols": {
            "CustomSchemaRegistry": [
              9865
            ],
            "SchemaRegistry": [
              2521
            ]
          },
          "id": 9866,
          "license": "FSL-1.1-MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9860,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".26"
              ],
              "nodeType": "PragmaDirective",
              "src": "40:24:27"
            },
            {
              "absolutePath": "@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol",
              "file": "@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol",
              "id": 9862,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9866,
              "sourceUnit": 2522,
              "src": "66:106:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 9861,
                    "name": "SchemaRegistry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2521,
                    "src": "75:14:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9863,
                    "name": "SchemaRegistry",
                    "nameLocations": [
                      "207:14:27"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2521,
                    "src": "207:14:27"
                  },
                  "id": 9864,
                  "nodeType": "InheritanceSpecifier",
                  "src": "207:14:27"
                }
              ],
              "canonicalName": "CustomSchemaRegistry",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 9865,
              "linearizedBaseContracts": [
                9865,
                2521,
                2588,
                2379,
                2389
              ],
              "name": "CustomSchemaRegistry",
              "nameLocation": "183:20:27",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 9866,
              "src": "174:51:27",
              "usedErrors": [
                2407
              ],
              "usedEvents": [
                2356
              ]
            }
          ],
          "src": "40:186:27"
        },
        "id": 27
      }
    },
    "contracts": {
      "@ethereum-attestation-service/eas-contracts/contracts/EAS.sol": {
        "EAS": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ISchemaRegistry",
                  "name": "registry",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "AccessDenied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "AlreadyRevoked",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "AlreadyRevokedOffchain",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "AlreadyTimestamped",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "DeadlineExpired",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "FailedCall",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidAttestation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidAttestations",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidExpirationTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidLength",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidNonce",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidOffset",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidRegistry",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidRevocation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidRevocations",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSchema",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidShortString",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidVerifier",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "Irrevocable",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NotFound",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NotPayable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "str",
                  "type": "string"
                }
              ],
              "name": "StringTooLong",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "WrongSchema",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "attester",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "schemaUID",
                  "type": "bytes32"
                }
              ],
              "name": "Attested",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EIP712DomainChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldNonce",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "NonceIncreased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "attester",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "schemaUID",
                  "type": "bytes32"
                }
              ],
              "name": "Revoked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "revoker",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint64",
                  "name": "timestamp",
                  "type": "uint64"
                }
              ],
              "name": "RevokedOffchain",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint64",
                  "name": "timestamp",
                  "type": "uint64"
                }
              ],
              "name": "Timestamped",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData",
                      "name": "data",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct AttestationRequest",
                  "name": "request",
                  "type": "tuple"
                }
              ],
              "name": "attest",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData",
                      "name": "data",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature",
                      "name": "signature",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct DelegatedAttestationRequest",
                  "name": "delegatedRequest",
                  "type": "tuple"
                }
              ],
              "name": "attestByDelegation",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "eip712Domain",
              "outputs": [
                {
                  "internalType": "bytes1",
                  "name": "fields",
                  "type": "bytes1"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "version",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "verifyingContract",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "salt",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256[]",
                  "name": "extensions",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAttestTypeHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "getAttestation",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint64",
                      "name": "time",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "expirationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "revocationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "refUID",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "recipient",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Attestation",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDomainSeparator",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getName",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "revoker",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "getRevokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getRevokeTypeHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSchemaRegistry",
              "outputs": [
                {
                  "internalType": "contract ISchemaRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "getTimestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "increaseNonce",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "isAttestationValid",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct MultiAttestationRequest[]",
                  "name": "multiRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiAttest",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "",
                  "type": "bytes32[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature[]",
                      "name": "signatures",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MultiDelegatedAttestationRequest[]",
                  "name": "multiDelegatedRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiAttestByDelegation",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "",
                  "type": "bytes32[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct MultiRevocationRequest[]",
                  "name": "multiRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiRevoke",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature[]",
                      "name": "signatures",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "address",
                      "name": "revoker",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MultiDelegatedRevocationRequest[]",
                  "name": "multiDelegatedRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiRevokeByDelegation",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "data",
                  "type": "bytes32[]"
                }
              ],
              "name": "multiRevokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "data",
                  "type": "bytes32[]"
                }
              ],
              "name": "multiTimestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData",
                      "name": "data",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct RevocationRequest",
                  "name": "request",
                  "type": "tuple"
                }
              ],
              "name": "revoke",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData",
                      "name": "data",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature",
                      "name": "signature",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "revoker",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct DelegatedRevocationRequest",
                  "name": "delegatedRequest",
                  "type": "tuple"
                }
              ],
              "name": "revokeByDelegation",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "revokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "timestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "finalize_allocation": {
                  "entryPoint": 816,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_toShortStringWithFallback": {
                  "entryPoint": 1237,
                  "id": 3760,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_toShortStringWithFallback_2949": {
                  "entryPoint": 851,
                  "id": 3760,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "6101e0806040523461032c57602081613e5080380380916100208285610330565b83398101031261032c57516001600160a01b0381169081810361032c576040519161004c604084610330565b60038352602083016245415360e81b81526040519061006c604083610330565b600582526020820190640312e332e360dc1b82526001608052600360a0525f60c05261009786610353565b610180526100a4836104d5565b6101a05285519020918261014052519020806101605246610100526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261011060c082610330565b51902060e052306101205282516001600160401b03811161031857600254600181811c9116801561030e575b60208210146102fa57601f8111610297575b506020601f821160011461023457819293945f92610229575b50508160011b915f199060031b1c1916176002555b1561021a576101c052604051613842908161060e82396080518161081d015260a05181610848015260c05181610873015260e05181612e7901526101005181612f3601526101205181612e4301526101405181612ec801526101605181612eee015261018051816106d101526101a051816106fd01526101c0518181816101cd01528181611ad201528181611d01015281816120b0015261268a0152f35b6311a1e69760e01b5f5260045ffd5b015190505f80610167565b601f1982169060025f52805f20915f5b81811061027f57509583600195969710610267575b505050811b0160025561017c565b01515f1960f88460031b161c191690555f8080610259565b9192602060018192868b015181550194019201610244565b60025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f830160051c810191602084106102f0575b601f0160051c01905b8181106102e5575061014e565b5f81556001016102d8565b90915081906102cf565b634e487b7160e01b5f52602260045260245ffd5b90607f169061013c565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761031857604052565b908151602081105f146103cd575090601f81511161038d57602081519101516020821061037e571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b038111610318575f54600181811c911680156104cb575b60208210146102fa57601f8111610499575b50602092601f821160011461043a57928192935f9261042f575b50508160011b915f199060031b1c1916175f5560ff90565b015190505f80610417565b601f198216935f8052805f20915f5b8681106104815750836001959610610469575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f808061045c565b91926020600181928685015181550194019201610449565b5f8052601f60205f20910160051c810190601f830160051c015b8181106104c057506103fd565b5f81556001016104b3565b90607f16906103eb565b908151602081105f14610500575090601f81511161038d57602081519101516020821061037e571790565b6001600160401b03811161031857600154600181811c91168015610603575b60208210146102fa57601f81116105d0575b50602092601f821160011461056f57928192935f92610564575b50508160011b915f199060031b1c19161760015560ff90565b015190505f8061054b565b601f1982169360015f52805f20915f5b8681106105b857508360019596106105a0575b505050811b0160015560ff90565b01515f1960f88460031b161c191690555f8080610592565b9192602060018192868501518155019401920161057f565b60015f52601f60205f20910160051c810190601f830160051c015b8181106105f85750610531565b5f81556001016105eb565b90607f169061051f56fe6101206040526004361015610012575f80fd5b5f3560e01c80630eabf66014610d9357806312b11a1714610d5957806313893f6114610cea57806317d7de7c14610c205780632d0335ab14610be85780633c04271514610af857806344adc90e14610a1a57806346926267146109da5780634cb7e9e5146109295780634d0030701461090057806354fd4d50146107fe57806379f7573a1461078657806384b0196e146106b957806395411525146104c6578063a3112a641461047b578063a6d4dbc7146103a4578063b469318d14610357578063b83010d31461031d578063cf190f34146102f3578063d45c4435146102c0578063e30bb5631461028c578063e71ff3651461021e578063ed24911d146101fc578063f10b5cc8146101b85763f17325e71461012d575f80fd5b60203660031901126101b4576004356001600160401b0381116101b45780600401604060031983360301126101b45760206101a481936101ab936101866101726114e1565b92610181602436920184611546565b611425565b61018f836112ff565b52610199826112ff565b503491339135612067565b01516112ff565b51604051908152f35b5f80fd5b346101b4575f3660031901126101b4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b4575f3660031901126101b4576020610216612e40565b604051908152f35b346101b45760203660031901126101b4576004356001600160401b0381116101b45761024e903690600401610f94565b906001600160401b034216915f5b81811061026e57602084604051908152f35b80610286856102806001948688611341565b35612c61565b0161025c565b346101b45760203660031901126101b45760206102b66004355f52600460205260405f2054151590565b6040519015158152f35b346101b45760203660031901126101b4576004355f52600560205260206001600160401b0360405f205416604051908152f35b346101b45760203660031901126101b45760206001600160401b0342166102168160043533611ea2565b346101b4575f3660031901126101b45760206040517fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e758152f35b346101b45760403660031901126101b4576001600160a01b03610378610fe8565b165f52600660205260405f206024355f5260205260206001600160401b0360405f205416604051908152f35b6101003660031901126101b4576040516103bd81611142565b6004358082526103cc36611216565b602083015260603660631901126101b4576040516103e98161118c565b60643560ff811681036101b4578152608435602082015260a43560408083019190915283015260c4356001600160a01b03811681036101b45780606084015260e4356001600160401b03811681036101b4578361044d91608061047996015261182b565b61045561167a565b61045e36611216565b610467826112ff565b52610471816112ff565b503492611ab5565b005b346101b45760203660031901126101b45761049461172d565b506004355f5260046020526104c26104ae60405f20611777565b60405191829160208352602083019061107e565b0390f35b60203660031901126101b4576004356001600160401b0381116101b4576104f1903690600401610f94565b6104fa8161156f565b5f9290915f198101913491855b818110610527576104c261051b8888612bf9565b60405191829182611012565b61053681838598969798611120565b9661054460208901896115da565b929091831580156106a1575b6106925789965f98959895604089019560608a019a60808b359b0135996001600160401b038b16809b1415995b83811015610624578f906105a08b61059a8360051b8d018d611546565b936116f8565b821015610610578f6105b28e9161155b565b906101b4578f908f906105ef61060a946105de600198604051966105d588611142565b87523690611425565b6020860152369060608802016112ad565b6040840152858060a01b031660608301526080820152611f26565b0161057d565b634e487b7160e01b5f52603260045260245ffd5b509a8d9e50839a50610660949c93929199506001985061065a6106699698889f6106529060209a149661155b565b93369161160f565b9061263a565b95865190611320565b94018051610677898961130c565b52610682888861130c565b5051510196949592939201610507565b63251f56a160e21b5f5260045ffd5b506106af60408b018b6116f8565b9050841415610550565b346101b4575f3660031901126101b4576107586106f57f000000000000000000000000000000000000000000000000000000000000000061345b565b6104c26107217f00000000000000000000000000000000000000000000000000000000000000006134ba565b610766604051916107336020846111de565b5f83525f368137604051958695600f60f81b875260e0602088015260e0870190610fc4565b908582036040870152610fc4565b904660608501523060808501525f60a085015283820360c085015261104b565b346101b45760203660031901126101b457600435335f52600360205260405f205490818111156107ef577f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb791604091335f52600360205280835f205582519182526020820152a1005b633ab3447f60e11b5f5260045ffd5b346101b4575f3660031901126101b4576104c260206108ec60016108417f0000000000000000000000000000000000000000000000000000000000000000612cd3565b818461086c7f0000000000000000000000000000000000000000000000000000000000000000612cd3565b81806108977f0000000000000000000000000000000000000000000000000000000000000000612cd3565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826111de565b604051918291602083526020830190610fc4565b346101b45760203660031901126101b45760206001600160401b03421661021681600435612c61565b60203660031901126101b4576004356001600160401b0381116101b457610954903690600401610f94565b5f19810191905f90345b81831061096757005b6109728383866115b8565b6020810135601e19823603018112156101b4578101918235926001600160401b0384116101b457602001928060061b360384136101b457600193826109cc926109d2956109c58c8b14943393369161123e565b9035611ce0565b90611320565b92019161095e565b60603660031901126101b4576104796109f161167a565b6109fa36611216565b610a03826112ff565b52610a0d816112ff565b5034903390600435611ab5565b60203660031901126101b4576004356001600160401b0381116101b457610a45903690600401610f94565b90610a4f8261156f565b915f9134905f925f198101905b808510610a70576104c261051b8789612bf9565b9091929394610a808683866115b8565b906020820191610a9083826115da565b90501561069257610ad0610ac789898885610ac0610ab260019a6020996115da565b93909514943393369161160f565b903561263a565b97885190611320565b96018051610ade898b61130c565b52610ae9888a61130c565b50515101950193929190610a5c565b60203660031901126101b4576004356001600160401b0381116101b457806004019060e060031982360301126101b457604051610b3481611142565b82359283825260248301938435946001600160401b0386116101b457610be06101ab95610bc76101a495610bb460209a98610b768c9a60043691880101611425565b8a820152610b8736604487016112ad565b6040820152610baa60c460a4870196610b9f88610ffe565b6060850152016112eb565b6080820152611f26565b610181610bbf6114e1565b953692611546565b610bd0846112ff565b52610bda836112ff565b5061155b565b903492612067565b346101b45760203660031901126101b4576001600160a01b03610c09610fe8565b165f526003602052602060405f2054604051908152f35b346101b4575f3660031901126101b4576040515f600254610c4081611351565b8084529060018116908115610cc65750600114610c68575b6104c2836108ec818503826111de565b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b808210610cac575090915081016020016108ec610c58565b919260018160209254838588010152019101909291610c94565b60ff191660208086019190915291151560051b840190910191506108ec9050610c58565b346101b45760203660031901126101b4576004356001600160401b0381116101b457610d1a903690600401610f94565b906001600160401b034216915f5b818110610d3a57602084604051908152f35b80610d5385610d4c6001948688611341565b3533611ea2565b01610d28565b346101b4575f3660031901126101b45760206040517ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768152f35b60203660031901126101b4576004356001600160401b0381116101b457610dbe903690600401610f94565b5f198101915f91345b818410610dd057005b610ddb848385611120565b60a0813603126101b457604051610df181611142565b8135815260208201356001600160401b0381116101b457820136601f820112156101b457610e2690369060208135910161123e565b906020810191825260408301356001600160401b0381116101b457830136601f820112156101b457803590610e5a826111ff565b91610e6860405193846111de565b808352602060608185019202830101913683116101b457602001905b828210610f7a5750505060408201818152610eb46080610ea660608801610ffe565b9660608601978852016112eb565b936080840194855251938451928315908115610f6e575b50610692575f5b838110610f0b57505091519351600195610f039590946109cc94508a8c14935085926001600160a01b031691611ce0565b930192610dc7565b600190610f688651610f1d838a61130c565b51610f2984885161130c565b51858060a01b038c5116906001600160401b038851169260405194610f4d86611142565b8552602085015260408401526060830152608082015261182b565b01610ed2565b9050518314158c610ecb565b6020606091610f8936856112ad565b815201910190610e84565b9181601f840112156101b4578235916001600160401b0383116101b4576020808501948460051b0101116101b457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101b457565b35906001600160a01b03821682036101b457565b60206040818301928281528451809452019201905f5b8181106110355750505090565b8251845260209384019390920191600101611028565b90602080835192838152019201905f5b8181106110685750505090565b825184526020938401939092019160010161105b565b9061014061012061111d9380518452602081015160208501526001600160401b0360408201511660408501526001600160401b0360608201511660608501526001600160401b03608082015116608085015260a081015160a085015260018060a01b0360c08201511660c085015260018060a01b0360e08201511660e08501526101008101511515610100850152015191816101208201520190610fc4565b90565b91908110156106105760051b81013590609e19813603018212156101b4570190565b60a081019081106001600160401b0382111761115d57604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761115d57604052565b606081019081106001600160401b0382111761115d57604052565b60c081019081106001600160401b0382111761115d57604052565b61014081019081106001600160401b0382111761115d57604052565b90601f801991011681019081106001600160401b0382111761115d57604052565b6001600160401b03811161115d5760051b60200190565b60409060231901126101b4576040519061122f82611171565b60243582526044356020830152565b92919261124a826111ff565b9361125860405195866111de565b602085848152019260061b8201918183116101b457925b82841061127c5750505050565b6040848303126101b4576020604091825161129681611171565b86358152828701358382015281520193019261126f565b91908260609103126101b4576040516112c58161118c565b8092803560ff811681036101b45760409182918452602081013560208501520135910152565b35906001600160401b03821682036101b457565b8051156106105760200190565b80518210156106105760209160051b010190565b9190820391821161132d57565b634e487b7160e01b5f52601160045260245ffd5b91908110156106105760051b0190565b90600182811c9216801561137f575b602083101461136b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611360565b5f929181549161139883611351565b80835292600181169081156113ed57506001146113b457505050565b5f9081526020812093945091925b8383106113d3575060209250010190565b6001816020929493945483858701015201910191906113c2565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b03811161115d57601f01601f191660200190565b919060c0838203126101b4576040519061143e826111a7565b819361144981610ffe565b8352611457602082016112eb565b6020840152604081013580151581036101b45760408401526060810135606084015260808101356001600160401b0381116101b45781019082601f830112156101b4578135926114a68461140a565b906114b460405192836111de565b848252602085850101116101b4575f60208560a09682889701838601378301015260808501520135910152565b604080519091906114f283826111de565b6001815291601f1901825f5b82811061150a57505050565b602090604051611519816111a7565b5f81525f838201525f60408201525f6060820152606060808201525f60a0820152828285010152016114fe565b90359060be19813603018212156101b4570190565b356001600160a01b03811681036101b45790565b90611579826111ff565b61158660405191826111de565b8281528092611597601f19916111ff565b01905f5b8281106115a757505050565b80606060208093850101520161159b565b91908110156106105760051b81013590603e19813603018212156101b4570190565b903590601e19813603018212156101b457018035906001600160401b0382116101b457602001918160051b360383136101b457565b92919061161b816111ff565b9361162960405195866111de565b602085838152019160051b8101918383116101b45781905b83821061164f575050505050565b81356001600160401b0381116101b45760209161166f8784938701611425565b815201910190611641565b6040805190919061168b83826111de565b6001815291601f1901825f5b8281106116a357505050565b6020906040516116b281611171565b5f81525f8382015282828501015201611697565b906116d0826111ff565b6116dd60405191826111de565b82815280926116ee601f19916111ff565b0190602036910137565b903590601e19813603018212156101b457018035906001600160401b0382116101b4576020019160608202360383136101b457565b6040519061173a826111c2565b6060610120835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201520152565b906006610120604051611789816111c2565b611819819580548352600181015460208401526001600160401b0360028201548181166040860152818160401c16606086015260801c166080840152600381015460a084015260018060a01b0360048201541660c084015260ff600582015460018060a01b03811660e086015260a01c1615156101008401526118126040518096819301611389565b03846111de565b0152565b5f19811461132d5760010190565b608081016001600160401b038151168015159081611973575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160208251920151845f5260036020526001600160401b0360405f20928354936118968561181d565b90555116926040519460208601967fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75885260408701526060860152608085015260a084015260c083015260e082015260e081526118f5610100826111de565b519020612f5c565b9051602083810151604080860151955181519384019290925282019490945260f89390931b6001600160f81b0319166060840152604183526001600160a01b03166119496061846111de565b612f82565b1561195557565b638baa579f60e01b5f5260045ffd5b631ab7da6b60e01b5f5260045ffd5b90506001600160401b034216115f611844565b519081151582036101b457565b6020818303126101b4578051906001600160401b0382116101b45701906080828203126101b45760405191608083018381106001600160401b0382111761115d576040528051835260208101516001600160a01b03811681036101b4576020840152611a0160408201611986565b60408401526060810151906001600160401b0382116101b4570181601f820112156101b457805190611a328261140a565b92611a4060405194856111de565b828452602083830101116101b457815f9260208093018386015e83010152606082015290565b90611a70826111ff565b611a7d60405191826111de565b8281528092611a8e601f19916111ff565b01905f5b828110611a9e57505050565b602090611aa961172d565b82828501015201611a92565b6040516351753e3760e11b81526004810182905290915f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611cd5575f92611cb1575b50815115611c93578051611b1d81611a66565b93611b27826116c6565b95426001600160401b0316935f5b848110611b50575050505050509161111d93916001936130ca565b611b5a818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c6657825467ffffffffffffffff60801b191660808b901b67ffffffffffffffff60801b16179092556001938792908c90611c01908690611bfb90611777565b611777565b9261130c565b52611c0c848d61130c565b506020810151611c1c858f61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208d60c0611c53888a8060a01b039361130c565b510151169251604051908152a401611b35565b63905e710760e01b5f5260045ffd5b63157bd4c360e01b5f5260045ffd5b634ca8886760e01b5f5260045ffd5b635f9bd90760e11b5f5260045ffd5b63c5723b5160e01b5f5260045ffd5b611cce9192503d805f833e611cc681836111de565b810190611993565b905f611b0a565b6040513d5f823e3d90fd5b6040516351753e3760e11b8152600481018290529195949392915f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611cd5575f91611e88575b50805115611c93578651611d4c81611a66565b92611d56826116c6565b945f996001600160401b0342169a5b848110611d7c57505050505061111d9596506130ca565b611d86818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c66578f600195611bf6611e19928b96908154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b611e23858d61130c565b52611e2e848c61130c565b506020810151611e3e858e61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208c60c0611e75888a8060a01b039361130c565b510151169251604051908152a401611d65565b611e9c91503d805f833e611cc681836111de565b5f611d39565b60018060a01b031691825f52600660205260405f2090825f52816020526001600160401b0360405f205416611f17576001600160401b0391835f5260205260405f20828216831982541617905516917f92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a22295f80a4565b63ec9d6eeb60e01b5f5260045ffd5b608081016001600160401b03815116801515908161203b575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160018060a01b03825116916001600160401b03602082015116906040810151151560608201519060a060808401516020815191012093015193885f5260036020526001600160401b0360405f2096875497611fc38961181d565b90555116966040519860208a019a7ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768c5260408b015260608a0152608089015260a088015260c087015260e086015261010085015261012084015261014083015261016082015261016081526118f5610180826111de565b90506001600160401b034216115f611f3f565b6040519061205b82611171565b60606020835f81520152565b919260e05261207461204e565b5080519061208061204e565b6101005261208d826116c6565b61010051602001526040516351753e3760e11b8152600481018490525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611cd5575f60805261261e575b506080515115611c935790916120fe83611a66565b60a05261210a836116c6565b60c0525f915b83831061213e575050505050612132600160e05160c05160a0516080516132b4565b61010051526101005190565b61214e838297939495969761130c565b519160208301956001600160401b03875116801515908161260a575b506125fb576040608051015115806125ee575b611c75576001600160401b0360608501519751169660018060a01b0385511660408601511515906080870151926040519a6121b78c6111c2565b5f8c528960208d01526001600160401b03421660408d015260608c01525f60808c015260a08b015260c08a015260018060a01b038a1660e08a01526101008901526101208801525f5b6020880151886122d06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156122f4575060010163ffffffff16612200565b905097969094959197939293808252805f52600460205260405f209180518355602081015160018401556123a2600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d57899461242c6006840154611351565b601f8111612596575b50602090601f831160011461252857600692915f918361251d575b50508160011b915f199060031b1c1916179101555b6060850151806124f9575b50936001946124818560a05161130c565b5261248e8460a05161130c565b5060a08101516124a08560c05161130c565b52816124b385602061010051015161130c565b52848060a01b039051166040519182527f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b356020868060a01b038b1693a401919290612110565b6125109193505f52600460205260405f2054151590565b15611ca25786915f612470565b015190505f80612450565b90600684015f52805f20915f5b601f198516811061257b5750918391600193600695601f19811610612563575b505050811b01910155612465565b01515f1960f88460031b161c191690555f8080612555565b8183015184558d985060019093019260209283019201612535565b90919293949550600684015f5260205f20601f840160051c8101602085106125e7575b908c979695949392915b601f830160051c820181106125d9575050612435565b5f81558d98506001016125c3565b50806125b9565b506040840151151561217d565b6308e8b93760e01b5f5260045ffd5b90506001600160401b03421610155f61216a565b612631903d805f833e611cc681836111de565b6080525f6120e9565b919293909360c05260e05261264d61204e565b5082519061265961204e565b61010052612666826116c6565b61010051602001526040516351753e3760e11b815260048101829052935f856024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa948515611cd5575f95612bdd575b50845115611c9357906126d483611a66565b6080526126e0836116c6565b60a0525f915b83831061270b5750505050506121329060e0519060c0519060a05190608051906132b4565b90929491939561271b858361130c565b519260208401966001600160401b038851168015159081612bc9575b506125fb5760408201511580612bbc575b611c7557606085015197518551604080880151608089015191519b9193901515926001600160a01b031691906001600160401b03168a60208e61278a816111c2565b5f815201528c60406001600160401b03421691015260608d01525f60808d015260a08c015260c08b015260018060a01b038b1660e08b01526101008a01526101208901525f5b6020890151896128a06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156128c4575060010163ffffffff166127d0565b9050989691979095949298808252805f52600460205260405f20918051835560208101516001840155612971600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d5788946129fb6006840154611351565b601f8111612b64575b50602090601f8311600114612af657600692915f9183612aeb575b50508160011b915f199060031b1c1916179101555b606085015180612ac7575b5093600194612a508560805161130c565b52612a5d8460805161130c565b5060a0810151612a6f8560a05161130c565b5281612a8285602061010051015161130c565b52848060a01b039051166040519182527f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b356020868060a01b038b1693a40191906126e6565b612ade9193505f52600460205260405f2054151590565b15611ca25785915f612a3f565b015190505f80612a1f565b90600684015f52805f20915f5b601f1985168110612b495750918391600193600695601f19811610612b31575b505050811b01910155612a34565b01515f1960f88460031b161c191690555f8080612b23565b8183015184558c985060019093019260209283019201612b03565b90919293949550600684015f5260205f20601f840160051c810160208510612bb5575b908b979695949392915b601f830160051c82018110612ba7575050612a04565b5f81558c9850600101612b91565b5080612b87565b5060408501511515612748565b90506001600160401b03421610155f612737565b612bf29195503d805f833e611cc681836111de565b935f6126c2565b90612c03906116c6565b905f8151915f5b838110612c18575050505090565b612c22818361130c565b5180515f915b818310612c3a57505050600101612c0a565b90919460018091612c4b888561130c565b51612c56828c61130c565b520195019190612c28565b90815f5260056020526001600160401b0360405f205416612cc4576001600160401b0390825f52600560205260405f20828216831982541617905516907f5aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459f5f80a3565b6317133ca360e11b5f5260045ffd5b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b821015612e1d575b806d04ee2d6d415b85acef8100000000600a921015612e02575b662386f26fc10000811015612dee575b6305f5e100811015612ddd575b612710811015612dce575b6064811015612dc0575b1015612db5575b600a60216001840193612d5a8561140a565b94612d6860405196876111de565b808652612d77601f199161140a565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353048015612db057600a9091612d82565b505090565b600190910190612d48565b606460029104930192612d41565b61271060049104930192612d37565b6305f5e10060089104930192612d2c565b662386f26fc1000060109104930192612d1f565b6d04ee2d6d415b85acef810000000060209104930192612d0f565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8104612cf5565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612f33575b15612e9b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152612f2d60c0826111de565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612e72565b604290612f67612e40565b906040519161190160f01b8352600283015260228201522090565b9190823b612fd15790612f9491613520565b506004811015612fbd57159182612faa57505090565b6001600160a01b03918216911614919050565b634e487b7160e01b5f52602160045260245ffd5b915f9261300761301585946040519283916020830195630b135d3f60e11b87526024840152604060448401526064830190610fc4565b03601f1981018352826111de565b51915afa6130216134f1565b8161304f575b81613030575090565b90506020818051810103126101b45760200151630b135d3f60e11b1490565b905060208151101590613027565b929160408401936040815282518095526060810194602060608260051b8401019401905f5b81811061309f5750505061111d939450602081840391015261104b565b9091946020806130bb600193605f19888203018c52895161107e565b97019801910196919096613082565b9391908051946001861461328e57602001516001600160a01b031690811561324f57604051636723702360e11b81525f9690602081600481875afa908115611cd5575f91613215575b50905f915b8183106131b9575050509160209161314793876040518096819582946388e5b2d960e01b84526004840161305d565b03925af1908115611cd5575f9161317f575b501561317057613167575090565b61111d9061372e565b63bf2f3a8b60e01b5f5260045ffd5b90506020813d6020116131b1575b8161319a602093836111de565b810103126101b4576131ab90611986565b5f613159565b3d915061318d565b909197966131c7898761130c565b51801561320a5782156131fb578181116131ec5780600192039801985b019190613118565b63044044a560e21b5f5260045ffd5b631574f9f360e01b5f5260045ffd5b5096976001906131e4565b90506020813d602011613247575b81613230602093836111de565b810103126101b45761324190611986565b5f613113565b3d9150613223565b50505f939192935b8281106132775750505061326a57505f90565b6132739061372e565b5f90565b613281818361130c565b516131fb57600101613257565b9061111d9550916132ad6132a66001949695966112ff565b51916112ff565b519161355a565b9391908051946001861461344457602001516001600160a01b031690811561341257604051636723702360e11b81525f9690602081600481875afa908115611cd5575f916133d8575b50905f915b81831061339a575050509160209161333193876040518096819582946348ed85bf60e11b84526004840161305d565b03925af1908115611cd5575f91613360575b501561335157613167575090565b63e8bee83960e01b5f5260045ffd5b90506020813d602011613392575b8161337b602093836111de565b810103126101b45761338c90611986565b5f613343565b3d915061336e565b909197966133a8898761130c565b5180156133cd5782156131fb578181116131ec5780600192039801985b019190613302565b5096976001906133c5565b90506020813d60201161340a575b816133f3602093836111de565b810103126101b45761340490611986565b5f6132fd565b3d91506133e6565b50505f939192935b82811061342d5750505061326a57505f90565b613437818361130c565b516131fb5760010161341a565b9061111d9550916132ad6132a65f949695966112ff565b60ff81146134a15760ff811690601f8211613492576040519161347f6040846111de565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b5060405161111d816134b3815f611389565b03826111de565b60ff81146134de5760ff811690601f8211613492576040519161347f6040846111de565b5060405161111d816134b3816001611389565b3d1561351b573d906135028261140a565b9161351060405193846111de565b82523d5f602084013e565b606090565b8151919060418303613550576135499250602082015190606060408401519301515f1a9061378a565b9192909190565b50505f9160029190565b6020015191949290916001600160a01b031690811561371c57908592918361369f575b602092919015613618576135ae9160405194858094819363e49617e160e01b8352876004840152602483019061107e565b03925af1908115611cd5575f916135de575b50156135cf575b613167575090565b63ccf3bb2760e01b5f5260045ffd5b90506020813d602011613610575b816135f9602093836111de565b810103126101b45761360a90611986565b5f6135c0565b3d91506135ec565b61363f9160405194858094819363e60c350560e01b8352876004840152602483019061107e565b03925af1908115611cd5575f91613665575b506135c75763bd8ba84d60e01b5f5260045ffd5b90506020813d602011613697575b81613680602093836111de565b810103126101b45761369190611986565b5f613651565b3d9150613673565b9491909250604051636723702360e11b8152602081600481875afa908115611cd5575f916136e2575b50156131fb578186116131ec57908590039385929061357d565b90506020813d602011613714575b816136fd602093836111de565b810103126101b45761370e90611986565b5f6136c8565b3d91506136f0565b50505090916131fb5761326a57505f90565b806137365750565b804710613774575f80808093335af161374d6134f1565b90156137565750565b80511561376557602081519101fd5b63d6bda27560e01b5f5260045ffd5b4763cf47918160e01b5f5260045260245260445ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613801579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611cd5575f516001600160a01b038116156137f757905f905f90565b505f906001905f90565b5050505f916003919056fea2646970667358221220f48e51740f05d059ac048af06e78a8ac517b8c255c9a61db839ce62daaa6abf764736f6c634300081b0033",
              "opcodes": "PUSH2 0x1E0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x32C JUMPI PUSH1 0x20 DUP2 PUSH2 0x3E50 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x20 DUP3 DUP6 PUSH2 0x330 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x32C JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x32C JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x4C PUSH1 0x40 DUP5 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD PUSH3 0x454153 PUSH1 0xE8 SHL DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x6C PUSH1 0x40 DUP4 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x5 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 PUSH5 0x312E332E3 PUSH1 0xDC SHL DUP3 MSTORE PUSH1 0x1 PUSH1 0x80 MSTORE PUSH1 0x3 PUSH1 0xA0 MSTORE PUSH0 PUSH1 0xC0 MSTORE PUSH2 0x97 DUP7 PUSH2 0x353 JUMP JUMPDEST PUSH2 0x180 MSTORE PUSH2 0xA4 DUP4 PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1A0 MSTORE DUP6 MLOAD SWAP1 KECCAK256 SWAP2 DUP3 PUSH2 0x140 MSTORE MLOAD SWAP1 KECCAK256 DUP1 PUSH2 0x160 MSTORE CHAINID PUSH2 0x100 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x110 PUSH1 0xC0 DUP3 PUSH2 0x330 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0xE0 MSTORE ADDRESS PUSH2 0x120 MSTORE DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x318 JUMPI PUSH1 0x2 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x30E JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x2FA JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x297 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x234 JUMPI DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x229 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x2 SSTORE JUMPDEST ISZERO PUSH2 0x21A JUMPI PUSH2 0x1C0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x3842 SWAP1 DUP2 PUSH2 0x60E DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x81D ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x848 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0x873 ADD MSTORE PUSH1 0xE0 MLOAD DUP2 PUSH2 0x2E79 ADD MSTORE PUSH2 0x100 MLOAD DUP2 PUSH2 0x2F36 ADD MSTORE PUSH2 0x120 MLOAD DUP2 PUSH2 0x2E43 ADD MSTORE PUSH2 0x140 MLOAD DUP2 PUSH2 0x2EC8 ADD MSTORE PUSH2 0x160 MLOAD DUP2 PUSH2 0x2EEE ADD MSTORE PUSH2 0x180 MLOAD DUP2 PUSH2 0x6D1 ADD MSTORE PUSH2 0x1A0 MLOAD DUP2 PUSH2 0x6FD ADD MSTORE PUSH2 0x1C0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x1CD ADD MSTORE DUP2 DUP2 PUSH2 0x1AD2 ADD MSTORE DUP2 DUP2 PUSH2 0x1D01 ADD MSTORE DUP2 DUP2 PUSH2 0x20B0 ADD MSTORE PUSH2 0x268A ADD MSTORE RETURN JUMPDEST PUSH4 0x11A1E697 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x167 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 PUSH1 0x2 PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x27F JUMPI POP SWAP6 DUP4 PUSH1 0x1 SWAP6 SWAP7 SWAP8 LT PUSH2 0x267 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x2 SSTORE PUSH2 0x17C JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x259 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x244 JUMP JUMPDEST PUSH1 0x2 PUSH0 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x2F0 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x2E5 JUMPI POP PUSH2 0x14E JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2D8 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x2CF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x13C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x318 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH1 0x20 DUP2 LT PUSH0 EQ PUSH2 0x3CD JUMPI POP SWAP1 PUSH1 0x1F DUP2 MLOAD GT PUSH2 0x38D JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD PUSH1 0x20 DUP3 LT PUSH2 0x37E JUMPI OR SWAP1 JUMP JUMPDEST PUSH0 NOT DUP3 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 PUSH1 0x20 SWAP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x318 JUMPI PUSH0 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x4CB JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x2FA JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x499 JUMPI JUMPDEST POP PUSH1 0x20 SWAP3 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x43A JUMPI SWAP3 DUP2 SWAP3 SWAP4 PUSH0 SWAP3 PUSH2 0x42F JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x417 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP4 PUSH0 DUP1 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP7 DUP2 LT PUSH2 0x481 JUMPI POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x469 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x45C JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x449 JUMP JUMPDEST PUSH0 DUP1 MSTORE PUSH1 0x1F PUSH1 0x20 PUSH0 KECCAK256 SWAP2 ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x4C0 JUMPI POP PUSH2 0x3FD JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B3 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x3EB JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH1 0x20 DUP2 LT PUSH0 EQ PUSH2 0x500 JUMPI POP SWAP1 PUSH1 0x1F DUP2 MLOAD GT PUSH2 0x38D JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD PUSH1 0x20 DUP3 LT PUSH2 0x37E JUMPI OR SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x318 JUMPI PUSH1 0x1 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x603 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x2FA JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x5D0 JUMPI JUMPDEST POP PUSH1 0x20 SWAP3 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x56F JUMPI SWAP3 DUP2 SWAP3 SWAP4 PUSH0 SWAP3 PUSH2 0x564 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x54B JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP4 PUSH1 0x1 PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP7 DUP2 LT PUSH2 0x5B8 JUMPI POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x5A0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x592 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x57F JUMP JUMPDEST PUSH1 0x1 PUSH0 MSTORE PUSH1 0x1F PUSH1 0x20 PUSH0 KECCAK256 SWAP2 ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x5F8 JUMPI POP PUSH2 0x531 JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x51F JUMP INVALID PUSH2 0x120 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEABF660 EQ PUSH2 0xD93 JUMPI DUP1 PUSH4 0x12B11A17 EQ PUSH2 0xD59 JUMPI DUP1 PUSH4 0x13893F61 EQ PUSH2 0xCEA JUMPI DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0xC20 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0xBE8 JUMPI DUP1 PUSH4 0x3C042715 EQ PUSH2 0xAF8 JUMPI DUP1 PUSH4 0x44ADC90E EQ PUSH2 0xA1A JUMPI DUP1 PUSH4 0x46926267 EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0x4CB7E9E5 EQ PUSH2 0x929 JUMPI DUP1 PUSH4 0x4D003070 EQ PUSH2 0x900 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x7FE JUMPI DUP1 PUSH4 0x79F7573A EQ PUSH2 0x786 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0x95411525 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0xA3112A64 EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xA6D4DBC7 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0xB469318D EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0xB83010D3 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xCF190F34 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xD45C4435 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xE30BB563 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xE71FF365 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xF10B5CC8 EQ PUSH2 0x1B8 JUMPI PUSH4 0xF17325E7 EQ PUSH2 0x12D JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x40 PUSH1 0x3 NOT DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x1A4 DUP2 SWAP4 PUSH2 0x1AB SWAP4 PUSH2 0x186 PUSH2 0x172 PUSH2 0x14E1 JUMP JUMPDEST SWAP3 PUSH2 0x181 PUSH1 0x24 CALLDATASIZE SWAP3 ADD DUP5 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x1425 JUMP JUMPDEST PUSH2 0x18F DUP4 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0x199 DUP3 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP2 CALLER SWAP2 CALLDATALOAD PUSH2 0x2067 JUMP JUMPDEST ADD MLOAD PUSH2 0x12FF JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x216 PUSH2 0x2E40 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x24E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x26E JUMPI PUSH1 0x20 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH2 0x286 DUP6 PUSH2 0x280 PUSH1 0x1 SWAP5 DUP7 DUP9 PUSH2 0x1341 JUMP JUMPDEST CALLDATALOAD PUSH2 0x2C61 JUMP JUMPDEST ADD PUSH2 0x25C JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x2B6 PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH2 0x216 DUP2 PUSH1 0x4 CALLDATALOAD CALLER PUSH2 0x1EA2 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xB5D556F07587EC0F08CF386545CC4362C702A001650C2058002615EE5C9D1E75 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x378 PUSH2 0xFE8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x24 CALLDATALOAD PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x100 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3BD DUP2 PUSH2 0x1142 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD DUP1 DUP3 MSTORE PUSH2 0x3CC CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 CALLDATASIZE PUSH1 0x63 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3E9 DUP2 PUSH2 0x118C JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP2 MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0x40 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP4 PUSH2 0x44D SWAP2 PUSH1 0x80 PUSH2 0x479 SWAP7 ADD MSTORE PUSH2 0x182B JUMP JUMPDEST PUSH2 0x455 PUSH2 0x167A JUMP JUMPDEST PUSH2 0x45E CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH2 0x467 DUP3 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0x471 DUP2 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP3 PUSH2 0x1AB5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x494 PUSH2 0x172D JUMP JUMPDEST POP PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH2 0x4C2 PUSH2 0x4AE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x4F1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x4FA DUP2 PUSH2 0x156F JUMP JUMPDEST PUSH0 SWAP3 SWAP1 SWAP2 PUSH0 NOT DUP2 ADD SWAP2 CALLVALUE SWAP2 DUP6 JUMPDEST DUP2 DUP2 LT PUSH2 0x527 JUMPI PUSH2 0x4C2 PUSH2 0x51B DUP9 DUP9 PUSH2 0x2BF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1012 JUMP JUMPDEST PUSH2 0x536 DUP2 DUP4 DUP6 SWAP9 SWAP7 SWAP8 SWAP9 PUSH2 0x1120 JUMP JUMPDEST SWAP7 PUSH2 0x544 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x15DA JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP4 ISZERO DUP1 ISZERO PUSH2 0x6A1 JUMPI JUMPDEST PUSH2 0x692 JUMPI DUP10 SWAP7 PUSH0 SWAP9 SWAP6 SWAP9 SWAP6 PUSH1 0x40 DUP10 ADD SWAP6 PUSH1 0x60 DUP11 ADD SWAP11 PUSH1 0x80 DUP12 CALLDATALOAD SWAP12 ADD CALLDATALOAD SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP12 AND DUP1 SWAP12 EQ ISZERO SWAP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x624 JUMPI DUP16 SWAP1 PUSH2 0x5A0 DUP12 PUSH2 0x59A DUP4 PUSH1 0x5 SHL DUP14 ADD DUP14 PUSH2 0x1546 JUMP JUMPDEST SWAP4 PUSH2 0x16F8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x610 JUMPI DUP16 PUSH2 0x5B2 DUP15 SWAP2 PUSH2 0x155B JUMP JUMPDEST SWAP1 PUSH2 0x1B4 JUMPI DUP16 SWAP1 DUP16 SWAP1 PUSH2 0x5EF PUSH2 0x60A SWAP5 PUSH2 0x5DE PUSH1 0x1 SWAP9 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x5D5 DUP9 PUSH2 0x1142 JUMP JUMPDEST DUP8 MSTORE CALLDATASIZE SWAP1 PUSH2 0x1425 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE CALLDATASIZE SWAP1 PUSH1 0x60 DUP9 MUL ADD PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE DUP6 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1F26 JUMP JUMPDEST ADD PUSH2 0x57D JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP11 DUP14 SWAP15 POP DUP4 SWAP11 POP PUSH2 0x660 SWAP5 SWAP13 SWAP4 SWAP3 SWAP2 SWAP10 POP PUSH1 0x1 SWAP9 POP PUSH2 0x65A PUSH2 0x669 SWAP7 SWAP9 DUP9 SWAP16 PUSH2 0x652 SWAP1 PUSH1 0x20 SWAP11 EQ SWAP7 PUSH2 0x155B JUMP JUMPDEST SWAP4 CALLDATASIZE SWAP2 PUSH2 0x160F JUMP JUMPDEST SWAP1 PUSH2 0x263A JUMP JUMPDEST SWAP6 DUP7 MLOAD SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP5 ADD DUP1 MLOAD PUSH2 0x677 DUP10 DUP10 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x682 DUP9 DUP9 PUSH2 0x130C JUMP JUMPDEST POP MLOAD MLOAD ADD SWAP7 SWAP5 SWAP6 SWAP3 SWAP4 SWAP3 ADD PUSH2 0x507 JUMP JUMPDEST PUSH4 0x251F56A1 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH2 0x6AF PUSH1 0x40 DUP12 ADD DUP12 PUSH2 0x16F8 JUMP JUMPDEST SWAP1 POP DUP5 EQ ISZERO PUSH2 0x550 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x758 PUSH2 0x6F5 PUSH32 0x0 PUSH2 0x345B JUMP JUMPDEST PUSH2 0x4C2 PUSH2 0x721 PUSH32 0x0 PUSH2 0x34BA JUMP JUMPDEST PUSH2 0x766 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x733 PUSH1 0x20 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH0 DUP4 MSTORE PUSH0 CALLDATASIZE DUP2 CALLDATACOPY PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0xF PUSH1 0xF8 SHL DUP8 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0xFC4 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x104B JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD CALLER PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 DUP2 DUP2 GT ISZERO PUSH2 0x7EF JUMPI PUSH32 0x57B09AF877DF9068FD60A69D7B21F5576B8B38955812D6AE4AC52942F1E38FB7 SWAP2 PUSH1 0x40 SWAP2 CALLER PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 DUP4 PUSH0 KECCAK256 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH4 0x3AB3447F PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x4C2 PUSH1 0x20 PUSH2 0x8EC PUSH1 0x1 PUSH2 0x841 PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST DUP2 DUP5 PUSH2 0x86C PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST DUP2 DUP1 PUSH2 0x897 PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP10 DUP8 DUP12 SWAP9 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP11 ADD MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH2 0x216 DUP2 PUSH1 0x4 CALLDATALOAD PUSH2 0x2C61 JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x954 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP2 SWAP1 PUSH0 SWAP1 CALLVALUE JUMPDEST DUP2 DUP4 LT PUSH2 0x967 JUMPI STOP JUMPDEST PUSH2 0x972 DUP4 DUP4 DUP7 PUSH2 0x15B8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x1E NOT DUP3 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x1B4 JUMPI DUP2 ADD SWAP2 DUP3 CALLDATALOAD SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP3 DUP1 PUSH1 0x6 SHL CALLDATASIZE SUB DUP5 SGT PUSH2 0x1B4 JUMPI PUSH1 0x1 SWAP4 DUP3 PUSH2 0x9CC SWAP3 PUSH2 0x9D2 SWAP6 PUSH2 0x9C5 DUP13 DUP12 EQ SWAP5 CALLER SWAP4 CALLDATASIZE SWAP2 PUSH2 0x123E JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x1CE0 JUMP JUMPDEST SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x95E JUMP JUMPDEST PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x479 PUSH2 0x9F1 PUSH2 0x167A JUMP JUMPDEST PUSH2 0x9FA CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH2 0xA03 DUP3 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0xA0D DUP2 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP1 CALLER SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x1AB5 JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xA45 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH2 0xA4F DUP3 PUSH2 0x156F JUMP JUMPDEST SWAP2 PUSH0 SWAP2 CALLVALUE SWAP1 PUSH0 SWAP3 PUSH0 NOT DUP2 ADD SWAP1 JUMPDEST DUP1 DUP6 LT PUSH2 0xA70 JUMPI PUSH2 0x4C2 PUSH2 0x51B DUP8 DUP10 PUSH2 0x2BF9 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH2 0xA80 DUP7 DUP4 DUP7 PUSH2 0x15B8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 ADD SWAP2 PUSH2 0xA90 DUP4 DUP3 PUSH2 0x15DA JUMP JUMPDEST SWAP1 POP ISZERO PUSH2 0x692 JUMPI PUSH2 0xAD0 PUSH2 0xAC7 DUP10 DUP10 DUP9 DUP6 PUSH2 0xAC0 PUSH2 0xAB2 PUSH1 0x1 SWAP11 PUSH1 0x20 SWAP10 PUSH2 0x15DA JUMP JUMPDEST SWAP4 SWAP1 SWAP6 EQ SWAP5 CALLER SWAP4 CALLDATASIZE SWAP2 PUSH2 0x160F JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x263A JUMP JUMPDEST SWAP8 DUP9 MLOAD SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP7 ADD DUP1 MLOAD PUSH2 0xADE DUP10 DUP12 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0xAE9 DUP9 DUP11 PUSH2 0x130C JUMP JUMPDEST POP MLOAD MLOAD ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA5C JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x4 ADD SWAP1 PUSH1 0xE0 PUSH1 0x3 NOT DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0xB34 DUP2 PUSH2 0x1142 JUMP JUMPDEST DUP3 CALLDATALOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x24 DUP4 ADD SWAP4 DUP5 CALLDATALOAD SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 GT PUSH2 0x1B4 JUMPI PUSH2 0xBE0 PUSH2 0x1AB SWAP6 PUSH2 0xBC7 PUSH2 0x1A4 SWAP6 PUSH2 0xBB4 PUSH1 0x20 SWAP11 SWAP9 PUSH2 0xB76 DUP13 SWAP11 PUSH1 0x4 CALLDATASIZE SWAP2 DUP9 ADD ADD PUSH2 0x1425 JUMP JUMPDEST DUP11 DUP3 ADD MSTORE PUSH2 0xB87 CALLDATASIZE PUSH1 0x44 DUP8 ADD PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xBAA PUSH1 0xC4 PUSH1 0xA4 DUP8 ADD SWAP7 PUSH2 0xB9F DUP9 PUSH2 0xFFE JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE ADD PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1F26 JUMP JUMPDEST PUSH2 0x181 PUSH2 0xBBF PUSH2 0x14E1 JUMP JUMPDEST SWAP6 CALLDATASIZE SWAP3 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0xBD0 DUP5 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0xBDA DUP4 PUSH2 0x12FF JUMP JUMPDEST POP PUSH2 0x155B JUMP JUMPDEST SWAP1 CALLVALUE SWAP3 PUSH2 0x2067 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC09 PUSH2 0xFE8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH0 PUSH1 0x2 SLOAD PUSH2 0xC40 DUP2 PUSH2 0x1351 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0xCC6 JUMPI POP PUSH1 0x1 EQ PUSH2 0xC68 JUMPI JUMPDEST PUSH2 0x4C2 DUP4 PUSH2 0x8EC DUP2 DUP6 SUB DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x2 PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE SWAP4 SWAP3 POP SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0xCAC JUMPI POP SWAP1 SWAP2 POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x8EC PUSH2 0xC58 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP3 SWAP2 PUSH2 0xC94 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x5 SHL DUP5 ADD SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x8EC SWAP1 POP PUSH2 0xC58 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xD1A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xD3A JUMPI PUSH1 0x20 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH2 0xD53 DUP6 PUSH2 0xD4C PUSH1 0x1 SWAP5 DUP7 DUP9 PUSH2 0x1341 JUMP JUMPDEST CALLDATALOAD CALLER PUSH2 0x1EA2 JUMP JUMPDEST ADD PUSH2 0xD28 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xFEB2925A02BAE3DAE48D424A0437A2B6AC939AA9230DDC55A1A76F065D988076 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xDBE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP2 PUSH0 SWAP2 CALLVALUE JUMPDEST DUP2 DUP5 LT PUSH2 0xDD0 JUMPI STOP JUMPDEST PUSH2 0xDDB DUP5 DUP4 DUP6 PUSH2 0x1120 JUMP JUMPDEST PUSH1 0xA0 DUP2 CALLDATASIZE SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0xDF1 DUP2 PUSH2 0x1142 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP3 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0xE26 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x20 DUP2 CALLDATALOAD SWAP2 ADD PUSH2 0x123E JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP4 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0xE5A DUP3 PUSH2 0x11FF JUMP JUMPDEST SWAP2 PUSH2 0xE68 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 PUSH1 0x60 DUP2 DUP6 ADD SWAP3 MUL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF7A JUMPI POP POP POP PUSH1 0x40 DUP3 ADD DUP2 DUP2 MSTORE PUSH2 0xEB4 PUSH1 0x80 PUSH2 0xEA6 PUSH1 0x60 DUP9 ADD PUSH2 0xFFE JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP7 ADD SWAP8 DUP9 MSTORE ADD PUSH2 0x12EB JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP5 ADD SWAP5 DUP6 MSTORE MLOAD SWAP4 DUP5 MLOAD SWAP3 DUP4 ISZERO SWAP1 DUP2 ISZERO PUSH2 0xF6E JUMPI JUMPDEST POP PUSH2 0x692 JUMPI PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xF0B JUMPI POP POP SWAP2 MLOAD SWAP4 MLOAD PUSH1 0x1 SWAP6 PUSH2 0xF03 SWAP6 SWAP1 SWAP5 PUSH2 0x9CC SWAP5 POP DUP11 DUP13 EQ SWAP4 POP DUP6 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x1CE0 JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0xF68 DUP7 MLOAD PUSH2 0xF1D DUP4 DUP11 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0xF29 DUP5 DUP9 MLOAD PUSH2 0x130C JUMP JUMPDEST MLOAD DUP6 DUP1 PUSH1 0xA0 SHL SUB DUP13 MLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 MLOAD AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0xF4D DUP7 PUSH2 0x1142 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x182B JUMP JUMPDEST ADD PUSH2 0xED2 JUMP JUMPDEST SWAP1 POP MLOAD DUP4 EQ ISZERO DUP13 PUSH2 0xECB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x60 SWAP2 PUSH2 0xF89 CALLDATASIZE DUP6 PUSH2 0x12AD JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xE84 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x1B4 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1035 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1028 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1068 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x105B JUMP JUMPDEST SWAP1 PUSH2 0x140 PUSH2 0x120 PUSH2 0x111D SWAP4 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP3 ADD MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0xC0 DUP3 ADD MLOAD AND PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0xE0 DUP3 ADD MLOAD AND PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE ADD MLOAD SWAP2 DUP2 PUSH2 0x120 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x9E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x23 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x122F DUP3 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x124A DUP3 PUSH2 0x11FF JUMP JUMPDEST SWAP4 PUSH2 0x1258 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP6 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x6 SHL DUP3 ADD SWAP2 DUP2 DUP4 GT PUSH2 0x1B4 JUMPI SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x127C JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP5 DUP4 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 SWAP2 DUP3 MLOAD PUSH2 0x1296 DUP2 PUSH2 0x1171 JUMP JUMPDEST DUP7 CALLDATALOAD DUP2 MSTORE DUP3 DUP8 ADD CALLDATALOAD DUP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x126F JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x12C5 DUP2 PUSH2 0x118C JUMP JUMPDEST DUP1 SWAP3 DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 SWAP2 DUP3 SWAP2 DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x610 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x132D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x137F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x136B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1360 JUMP JUMPDEST PUSH0 SWAP3 SWAP2 DUP2 SLOAD SWAP2 PUSH2 0x1398 DUP4 PUSH2 0x1351 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x13ED JUMPI POP PUSH1 0x1 EQ PUSH2 0x13B4 JUMPI POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 SWAP4 SWAP5 POP SWAP2 SWAP3 JUMPDEST DUP4 DUP4 LT PUSH2 0x13D3 JUMPI POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP5 SWAP4 SWAP5 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP2 SWAP1 PUSH2 0x13C2 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xC0 DUP4 DUP3 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x143E DUP3 PUSH2 0x11A7 JUMP JUMPDEST DUP2 SWAP4 PUSH2 0x1449 DUP2 PUSH2 0xFFE JUMP JUMPDEST DUP4 MSTORE PUSH2 0x1457 PUSH1 0x20 DUP3 ADD PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP2 ADD SWAP1 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP2 CALLDATALOAD SWAP3 PUSH2 0x14A6 DUP5 PUSH2 0x140A JUMP JUMPDEST SWAP1 PUSH2 0x14B4 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x20 DUP6 DUP6 ADD ADD GT PUSH2 0x1B4 JUMPI PUSH0 PUSH1 0x20 DUP6 PUSH1 0xA0 SWAP7 DUP3 DUP9 SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x14F2 DUP4 DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE SWAP2 PUSH1 0x1F NOT ADD DUP3 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x150A JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x1519 DUP2 PUSH2 0x11A7 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x14FE JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0xBE NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1579 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x1586 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x1597 PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x15A7 JUMPI POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP6 ADD ADD MSTORE ADD PUSH2 0x159B JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x3E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x1B4 JUMPI JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x161B DUP2 PUSH2 0x11FF JUMP JUMPDEST SWAP4 PUSH2 0x1629 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP6 DUP4 DUP2 MSTORE ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x1B4 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x164F JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x166F DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x1425 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x168B DUP4 DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE SWAP2 PUSH1 0x1F NOT ADD DUP3 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x16A3 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x16B2 DUP2 PUSH2 0x1171 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x1697 JUMP JUMPDEST SWAP1 PUSH2 0x16D0 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x16DD PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x16EE PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP2 PUSH1 0x60 DUP3 MUL CALLDATASIZE SUB DUP4 SGT PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x173A DUP3 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x120 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH0 PUSH1 0xC0 DUP3 ADD MSTORE PUSH0 PUSH1 0xE0 DUP3 ADD MSTORE PUSH0 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x6 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x1789 DUP2 PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0x1819 DUP2 SWAP6 DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x2 DUP3 ADD SLOAD DUP2 DUP2 AND PUSH1 0x40 DUP7 ADD MSTORE DUP2 DUP2 PUSH1 0x40 SHR AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 SHR AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x4 DUP3 ADD SLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0xA0 SHR AND ISZERO ISZERO PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1812 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP4 ADD PUSH2 0x1389 JUMP JUMPDEST SUB DUP5 PUSH2 0x11DE JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH0 NOT DUP2 EQ PUSH2 0x132D JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x1973 JUMPI JUMPDEST POP PUSH2 0x1964 JUMPI DUP2 PUSH2 0x18FD PUSH1 0x20 PUSH2 0x194E SWAP5 ADD MLOAD SWAP2 PUSH1 0x40 DUP2 ADD MLOAD SWAP4 PUSH1 0x60 DUP3 ADD SWAP4 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP3 MLOAD SWAP2 PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD DUP5 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SWAP3 DUP4 SLOAD SWAP4 PUSH2 0x1896 DUP6 PUSH2 0x181D JUMP JUMPDEST SWAP1 SSTORE MLOAD AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH1 0x20 DUP7 ADD SWAP7 PUSH32 0xB5D556F07587EC0F08CF386545CC4362C702A001650C2058002615EE5C9D1E75 DUP9 MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 MSTORE PUSH2 0x18F5 PUSH2 0x100 DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x2F5C JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x20 DUP4 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP6 MLOAD DUP2 MLOAD SWAP4 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xF8 SWAP4 SWAP1 SWAP4 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x41 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1949 PUSH1 0x61 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH2 0x2F82 JUMP JUMPDEST ISZERO PUSH2 0x1955 JUMPI JUMP JUMPDEST PUSH4 0x8BAA579F PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x1AB7DA6B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND GT PUSH0 PUSH2 0x1844 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x1B4 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI ADD SWAP1 PUSH1 0x80 DUP3 DUP3 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x80 DUP4 ADD DUP4 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1A01 PUSH1 0x40 DUP3 ADD PUSH2 0x1986 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1A32 DUP3 PUSH2 0x140A JUMP JUMPDEST SWAP3 PUSH2 0x1A40 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x1B4 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A70 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x1A7D PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x1A8E PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1A9E JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x1AA9 PUSH2 0x172D JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x1A92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP3 PUSH2 0x1CB1 JUMPI JUMPDEST POP DUP2 MLOAD ISZERO PUSH2 0x1C93 JUMPI DUP1 MLOAD PUSH2 0x1B1D DUP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP4 PUSH2 0x1B27 DUP3 PUSH2 0x16C6 JUMP JUMPDEST SWAP6 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1B50 JUMPI POP POP POP POP POP POP SWAP2 PUSH2 0x111D SWAP4 SWAP2 PUSH1 0x1 SWAP4 PUSH2 0x30CA JUMP JUMPDEST PUSH2 0x1B5A DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP1 DUP2 MLOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD ISZERO PUSH2 0x1CA2 JUMPI DUP6 PUSH1 0x1 DUP5 ADD SLOAD SUB PUSH2 0x1C93 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 SWAP1 DUP2 AND DUP3 SWAP1 SUB PUSH2 0x1C84 JUMPI PUSH1 0xA0 SHR PUSH1 0xFF AND ISZERO PUSH2 0x1C75 JUMPI PUSH1 0x2 DUP5 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 SLOAD PUSH1 0x80 SHR AND PUSH2 0x1C66 JUMPI DUP3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x80 DUP12 SWAP1 SHL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP4 DUP8 SWAP3 SWAP1 DUP13 SWAP1 PUSH2 0x1C01 SWAP1 DUP7 SWAP1 PUSH2 0x1BFB SWAP1 PUSH2 0x1777 JUMP JUMPDEST PUSH2 0x1777 JUMP JUMPDEST SWAP3 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x1C0C DUP5 DUP14 PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x1C1C DUP6 DUP16 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH32 0xF930A6E2523C9CC298691873087A740550B8FC85A0680830414C148ED927F615 PUSH1 0x20 DUP14 PUSH1 0xC0 PUSH2 0x1C53 DUP9 DUP11 DUP1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x130C JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 ADD PUSH2 0x1B35 JUMP JUMPDEST PUSH4 0x905E7107 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x157BD4C3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4CA88867 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x5F9BD907 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xC5723B51 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1CCE SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1993 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x1E88 JUMPI JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x1C93 JUMPI DUP7 MLOAD PUSH2 0x1D4C DUP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP3 PUSH2 0x1D56 DUP3 PUSH2 0x16C6 JUMP JUMPDEST SWAP5 PUSH0 SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP11 JUMPDEST DUP5 DUP2 LT PUSH2 0x1D7C JUMPI POP POP POP POP POP PUSH2 0x111D SWAP6 SWAP7 POP PUSH2 0x30CA JUMP JUMPDEST PUSH2 0x1D86 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP1 DUP2 MLOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD ISZERO PUSH2 0x1CA2 JUMPI DUP6 PUSH1 0x1 DUP5 ADD SLOAD SUB PUSH2 0x1C93 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 SWAP1 DUP2 AND DUP3 SWAP1 SUB PUSH2 0x1C84 JUMPI PUSH1 0xA0 SHR PUSH1 0xFF AND ISZERO PUSH2 0x1C75 JUMPI PUSH1 0x2 DUP5 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 SLOAD PUSH1 0x80 SHR AND PUSH2 0x1C66 JUMPI DUP16 PUSH1 0x1 SWAP6 PUSH2 0x1BF6 PUSH2 0x1E19 SWAP3 DUP12 SWAP7 SWAP1 DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1E23 DUP6 DUP14 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x1E2E DUP5 DUP13 PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x1E3E DUP6 DUP15 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH32 0xF930A6E2523C9CC298691873087A740550B8FC85A0680830414C148ED927F615 PUSH1 0x20 DUP13 PUSH1 0xC0 PUSH2 0x1E75 DUP9 DUP11 DUP1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x130C JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 ADD PUSH2 0x1D65 JUMP JUMPDEST PUSH2 0x1E9C SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST PUSH0 PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH2 0x1F17 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP4 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 AND DUP4 NOT DUP3 SLOAD AND OR SWAP1 SSTORE AND SWAP2 PUSH32 0x92A1F7A41A7C585A8B09E25B195E225B1D43248DACA46B0FAF9E0792777A2229 PUSH0 DUP1 LOG4 JUMP JUMPDEST PUSH4 0xEC9D6EEB PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x203B JUMPI JUMPDEST POP PUSH2 0x1964 JUMPI DUP2 PUSH2 0x18FD PUSH1 0x20 PUSH2 0x194E SWAP5 ADD MLOAD SWAP2 PUSH1 0x40 DUP2 ADD MLOAD SWAP4 PUSH1 0x60 DUP3 ADD SWAP4 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP3 MLOAD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND SWAP1 PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP3 ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 ADD MLOAD SWAP4 DUP9 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SWAP7 DUP8 SLOAD SWAP8 PUSH2 0x1FC3 DUP10 PUSH2 0x181D JUMP JUMPDEST SWAP1 SSTORE MLOAD AND SWAP7 PUSH1 0x40 MLOAD SWAP9 PUSH1 0x20 DUP11 ADD SWAP11 PUSH32 0xFEB2925A02BAE3DAE48D424A0437A2B6AC939AA9230DDC55A1A76F065D988076 DUP13 MSTORE PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x160 DUP2 MSTORE PUSH2 0x18F5 PUSH2 0x180 DUP3 PUSH2 0x11DE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND GT PUSH0 PUSH2 0x1F3F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x205B DUP3 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 DUP4 PUSH0 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0xE0 MSTORE PUSH2 0x2074 PUSH2 0x204E JUMP JUMPDEST POP DUP1 MLOAD SWAP1 PUSH2 0x2080 PUSH2 0x204E JUMP JUMPDEST PUSH2 0x100 MSTORE PUSH2 0x208D DUP3 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL DUP1 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 PUSH1 0x80 MSTORE PUSH2 0x261E JUMPI JUMPDEST POP PUSH1 0x80 MLOAD MLOAD ISZERO PUSH2 0x1C93 JUMPI SWAP1 SWAP2 PUSH2 0x20FE DUP4 PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH2 0x210A DUP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x213E JUMPI POP POP POP POP POP PUSH2 0x2132 PUSH1 0x1 PUSH1 0xE0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x80 MLOAD PUSH2 0x32B4 JUMP JUMPDEST PUSH2 0x100 MLOAD MSTORE PUSH2 0x100 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x214E DUP4 DUP3 SWAP8 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x260A JUMPI JUMPDEST POP PUSH2 0x25FB JUMPI PUSH1 0x40 PUSH1 0x80 MLOAD ADD MLOAD ISZERO DUP1 PUSH2 0x25EE JUMPI JUMPDEST PUSH2 0x1C75 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP6 ADD MLOAD SWAP8 MLOAD AND SWAP7 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND PUSH1 0x40 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 PUSH1 0x80 DUP8 ADD MLOAD SWAP3 PUSH1 0x40 MLOAD SWAP11 PUSH2 0x21B7 DUP13 PUSH2 0x11C2 JUMP JUMPDEST PUSH0 DUP13 MSTORE DUP10 PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH1 0x40 DUP14 ADD MSTORE PUSH1 0x60 DUP13 ADD MSTORE PUSH0 PUSH1 0x80 DUP13 ADD MSTORE PUSH1 0xA0 DUP12 ADD MSTORE PUSH1 0xC0 DUP11 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0xE0 DUP11 ADD MSTORE PUSH2 0x100 DUP10 ADD MSTORE PUSH2 0x120 DUP9 ADD MSTORE PUSH0 JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD DUP9 PUSH2 0x22D0 PUSH1 0x4 PUSH1 0x99 PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x20 PUSH1 0xE0 DUP7 ADD MLOAD SWAP6 PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 PUSH2 0x120 PUSH1 0xA0 DUP5 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP8 DUP8 DUP10 ADD SWAP14 DUP15 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x54 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x68 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x70 DUP7 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x78 DUP6 ADD MSTORE PUSH1 0x79 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP5 ADD MCOPY DUP2 ADD PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP9 PUSH1 0xE0 SHL AND DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1B NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH2 0x22F4 JUMPI POP PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND PUSH2 0x2200 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 SWAP1 SWAP5 SWAP6 SWAP2 SWAP8 SWAP4 SWAP3 SWAP4 DUP1 DUP3 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP1 MLOAD DUP4 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE PUSH2 0x23A2 PUSH1 0x2 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT DUP3 SLOAD AND OR DUP2 SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL DUP3 SLOAD SWAP2 PUSH1 0x40 SHL AND SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP5 ADD MLOAD AND DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 ADD MLOAD PUSH1 0x3 DUP6 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH2 0x100 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ISZERO ISZERO SWAP1 SWAP3 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE PUSH2 0x120 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI DUP10 SWAP5 PUSH2 0x242C PUSH1 0x6 DUP5 ADD SLOAD PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2596 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x2528 JUMPI PUSH1 0x6 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x251D JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 PUSH2 0x24F9 JUMPI JUMPDEST POP SWAP4 PUSH1 0x1 SWAP5 PUSH2 0x2481 DUP6 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x248E DUP5 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x24A0 DUP6 PUSH1 0xC0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP2 PUSH2 0x24B3 DUP6 PUSH1 0x20 PUSH2 0x100 MLOAD ADD MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP5 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x8BF46BF4CFD674FA735A3D63EC1C9AD4153F033C290341F3A588B75685141B35 PUSH1 0x20 DUP7 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 LOG4 ADD SWAP2 SWAP3 SWAP1 PUSH2 0x2110 JUMP JUMPDEST PUSH2 0x2510 SWAP2 SWAP4 POP PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CA2 JUMPI DUP7 SWAP2 PUSH0 PUSH2 0x2470 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2450 JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP5 ADD PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH2 0x257B JUMPI POP SWAP2 DUP4 SWAP2 PUSH1 0x1 SWAP4 PUSH1 0x6 SWAP6 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x2563 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP2 ADD SSTORE PUSH2 0x2465 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2555 JUMP JUMPDEST DUP2 DUP4 ADD MLOAD DUP5 SSTORE DUP14 SWAP9 POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2535 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 POP PUSH1 0x6 DUP5 ADD PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x25E7 JUMPI JUMPDEST SWAP1 DUP13 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x25D9 JUMPI POP POP PUSH2 0x2435 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP14 SWAP9 POP PUSH1 0x1 ADD PUSH2 0x25C3 JUMP JUMPDEST POP DUP1 PUSH2 0x25B9 JUMP JUMPDEST POP PUSH1 0x40 DUP5 ADD MLOAD ISZERO ISZERO PUSH2 0x217D JUMP JUMPDEST PUSH4 0x8E8B937 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND LT ISZERO PUSH0 PUSH2 0x216A JUMP JUMPDEST PUSH2 0x2631 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH0 PUSH2 0x20E9 JUMP JUMPDEST SWAP2 SWAP3 SWAP4 SWAP1 SWAP4 PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x264D PUSH2 0x204E JUMP JUMPDEST POP DUP3 MLOAD SWAP1 PUSH2 0x2659 PUSH2 0x204E JUMP JUMPDEST PUSH2 0x100 MSTORE PUSH2 0x2666 DUP3 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 DUP6 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP6 PUSH2 0x2BDD JUMPI JUMPDEST POP DUP5 MLOAD ISZERO PUSH2 0x1C93 JUMPI SWAP1 PUSH2 0x26D4 DUP4 PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH2 0x26E0 DUP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x270B JUMPI POP POP POP POP POP PUSH2 0x2132 SWAP1 PUSH1 0xE0 MLOAD SWAP1 PUSH1 0xC0 MLOAD SWAP1 PUSH1 0xA0 MLOAD SWAP1 PUSH1 0x80 MLOAD SWAP1 PUSH2 0x32B4 JUMP JUMPDEST SWAP1 SWAP3 SWAP5 SWAP2 SWAP4 SWAP6 PUSH2 0x271B DUP6 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x2BC9 JUMPI JUMPDEST POP PUSH2 0x25FB JUMPI PUSH1 0x40 DUP3 ADD MLOAD ISZERO DUP1 PUSH2 0x2BBC JUMPI JUMPDEST PUSH2 0x1C75 JUMPI PUSH1 0x60 DUP6 ADD MLOAD SWAP8 MLOAD DUP6 MLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD SWAP2 MLOAD SWAP12 SWAP2 SWAP4 SWAP1 ISZERO ISZERO SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP11 PUSH1 0x20 DUP15 PUSH2 0x278A DUP2 PUSH2 0x11C2 JUMP JUMPDEST PUSH0 DUP2 MSTORE ADD MSTORE DUP13 PUSH1 0x40 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 ADD MSTORE PUSH1 0x60 DUP14 ADD MSTORE PUSH0 PUSH1 0x80 DUP14 ADD MSTORE PUSH1 0xA0 DUP13 ADD MSTORE PUSH1 0xC0 DUP12 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0xE0 DUP12 ADD MSTORE PUSH2 0x100 DUP11 ADD MSTORE PUSH2 0x120 DUP10 ADD MSTORE PUSH0 JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD DUP10 PUSH2 0x28A0 PUSH1 0x4 PUSH1 0x99 PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x20 PUSH1 0xE0 DUP7 ADD MLOAD SWAP6 PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 PUSH2 0x120 PUSH1 0xA0 DUP5 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP8 DUP8 DUP10 ADD SWAP14 DUP15 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x54 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x68 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x70 DUP7 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x78 DUP6 ADD MSTORE PUSH1 0x79 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP5 ADD MCOPY DUP2 ADD PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP9 PUSH1 0xE0 SHL AND DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1B NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH2 0x28C4 JUMPI POP PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND PUSH2 0x27D0 JUMP JUMPDEST SWAP1 POP SWAP9 SWAP7 SWAP2 SWAP8 SWAP1 SWAP6 SWAP5 SWAP3 SWAP9 DUP1 DUP3 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP1 MLOAD DUP4 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE PUSH2 0x2971 PUSH1 0x2 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT DUP3 SLOAD AND OR DUP2 SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL DUP3 SLOAD SWAP2 PUSH1 0x40 SHL AND SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP5 ADD MLOAD AND DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 ADD MLOAD PUSH1 0x3 DUP6 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH2 0x100 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ISZERO ISZERO SWAP1 SWAP3 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE PUSH2 0x120 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI DUP9 SWAP5 PUSH2 0x29FB PUSH1 0x6 DUP5 ADD SLOAD PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2B64 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x2AF6 JUMPI PUSH1 0x6 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x2AEB JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 PUSH2 0x2AC7 JUMPI JUMPDEST POP SWAP4 PUSH1 0x1 SWAP5 PUSH2 0x2A50 DUP6 PUSH1 0x80 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x2A5D DUP5 PUSH1 0x80 MLOAD PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x2A6F DUP6 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP2 PUSH2 0x2A82 DUP6 PUSH1 0x20 PUSH2 0x100 MLOAD ADD MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP5 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x8BF46BF4CFD674FA735A3D63EC1C9AD4153F033C290341F3A588B75685141B35 PUSH1 0x20 DUP7 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 LOG4 ADD SWAP2 SWAP1 PUSH2 0x26E6 JUMP JUMPDEST PUSH2 0x2ADE SWAP2 SWAP4 POP PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CA2 JUMPI DUP6 SWAP2 PUSH0 PUSH2 0x2A3F JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2A1F JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP5 ADD PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH2 0x2B49 JUMPI POP SWAP2 DUP4 SWAP2 PUSH1 0x1 SWAP4 PUSH1 0x6 SWAP6 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x2B31 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP2 ADD SSTORE PUSH2 0x2A34 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2B23 JUMP JUMPDEST DUP2 DUP4 ADD MLOAD DUP5 SSTORE DUP13 SWAP9 POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2B03 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 POP PUSH1 0x6 DUP5 ADD PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x2BB5 JUMPI JUMPDEST SWAP1 DUP12 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x2BA7 JUMPI POP POP PUSH2 0x2A04 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP13 SWAP9 POP PUSH1 0x1 ADD PUSH2 0x2B91 JUMP JUMPDEST POP DUP1 PUSH2 0x2B87 JUMP JUMPDEST POP PUSH1 0x40 DUP6 ADD MLOAD ISZERO ISZERO PUSH2 0x2748 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND LT ISZERO PUSH0 PUSH2 0x2737 JUMP JUMPDEST PUSH2 0x2BF2 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST SWAP4 PUSH0 PUSH2 0x26C2 JUMP JUMPDEST SWAP1 PUSH2 0x2C03 SWAP1 PUSH2 0x16C6 JUMP JUMPDEST SWAP1 PUSH0 DUP2 MLOAD SWAP2 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x2C18 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2C22 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 MLOAD PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x2C3A JUMPI POP POP POP PUSH1 0x1 ADD PUSH2 0x2C0A JUMP JUMPDEST SWAP1 SWAP2 SWAP5 PUSH1 0x1 DUP1 SWAP2 PUSH2 0x2C4B DUP9 DUP6 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x2C56 DUP3 DUP13 PUSH2 0x130C JUMP JUMPDEST MSTORE ADD SWAP6 ADD SWAP2 SWAP1 PUSH2 0x2C28 JUMP JUMPDEST SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH2 0x2CC4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP3 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 AND DUP4 NOT DUP3 SLOAD AND OR SWAP1 SSTORE AND SWAP1 PUSH32 0x5AAFCEEB1C7AD58E4A84898BDEE37C02C0FC46E7D24E6B60E8209449F183459F PUSH0 DUP1 LOG3 JUMP JUMPDEST PUSH4 0x17133CA3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x2E1D JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x2E02 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x2DEE JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x2DDD JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x2DCE JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x2DC0 JUMPI JUMPDEST LT ISZERO PUSH2 0x2DB5 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x2D5A DUP6 PUSH2 0x140A JUMP JUMPDEST SWAP5 PUSH2 0x2D68 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x11DE JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x2D77 PUSH1 0x1F NOT SWAP2 PUSH2 0x140A JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x2DB0 JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x2D82 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2D48 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D41 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D37 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D2C JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D1F JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x2CF5 JUMP JUMPDEST ADDRESS PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2F33 JUMPI JUMPDEST ISZERO PUSH2 0x2E9B JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x2F2D PUSH1 0xC0 DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x2E72 JUMP JUMPDEST PUSH1 0x42 SWAP1 PUSH2 0x2F67 PUSH2 0x2E40 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1901 PUSH1 0xF0 SHL DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 EXTCODESIZE PUSH2 0x2FD1 JUMPI SWAP1 PUSH2 0x2F94 SWAP2 PUSH2 0x3520 JUMP JUMPDEST POP PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x2FBD JUMPI ISZERO SWAP2 DUP3 PUSH2 0x2FAA JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH0 SWAP3 PUSH2 0x3007 PUSH2 0x3015 DUP6 SWAP5 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD SWAP6 PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP8 MSTORE PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP2 GAS STATICCALL PUSH2 0x3021 PUSH2 0x34F1 JUMP JUMPDEST DUP2 PUSH2 0x304F JUMPI JUMPDEST DUP2 PUSH2 0x3030 JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 MLOAD LT ISZERO SWAP1 PUSH2 0x3027 JUMP JUMPDEST SWAP3 SWAP2 PUSH1 0x40 DUP5 ADD SWAP4 PUSH1 0x40 DUP2 MSTORE DUP3 MLOAD DUP1 SWAP6 MSTORE PUSH1 0x60 DUP2 ADD SWAP5 PUSH1 0x20 PUSH1 0x60 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x309F JUMPI POP POP POP PUSH2 0x111D SWAP4 SWAP5 POP PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x104B JUMP JUMPDEST SWAP1 SWAP2 SWAP5 PUSH1 0x20 DUP1 PUSH2 0x30BB PUSH1 0x1 SWAP4 PUSH1 0x5F NOT DUP9 DUP3 SUB ADD DUP13 MSTORE DUP10 MLOAD PUSH2 0x107E JUMP JUMPDEST SWAP8 ADD SWAP9 ADD SWAP2 ADD SWAP7 SWAP2 SWAP1 SWAP7 PUSH2 0x3082 JUMP JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP5 PUSH1 0x1 DUP7 EQ PUSH2 0x328E JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x324F JUMPI PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP7 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3215 JUMPI JUMPDEST POP SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x31B9 JUMPI POP POP POP SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x3147 SWAP4 DUP8 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH4 0x88E5B2D9 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x305D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x317F JUMPI JUMPDEST POP ISZERO PUSH2 0x3170 JUMPI PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x111D SWAP1 PUSH2 0x372E JUMP JUMPDEST PUSH4 0xBF2F3A8B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x31B1 JUMPI JUMPDEST DUP2 PUSH2 0x319A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x31AB SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3159 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x318D JUMP JUMPDEST SWAP1 SWAP2 SWAP8 SWAP7 PUSH2 0x31C7 DUP10 DUP8 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x320A JUMPI DUP3 ISZERO PUSH2 0x31FB JUMPI DUP2 DUP2 GT PUSH2 0x31EC JUMPI DUP1 PUSH1 0x1 SWAP3 SUB SWAP9 ADD SWAP9 JUMPDEST ADD SWAP2 SWAP1 PUSH2 0x3118 JUMP JUMPDEST PUSH4 0x44044A5 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x1574F9F3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP SWAP7 SWAP8 PUSH1 0x1 SWAP1 PUSH2 0x31E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3247 JUMPI JUMPDEST DUP2 PUSH2 0x3230 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3241 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3113 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3223 JUMP JUMPDEST POP POP PUSH0 SWAP4 SWAP2 SWAP3 SWAP4 JUMPDEST DUP3 DUP2 LT PUSH2 0x3277 JUMPI POP POP POP PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3273 SWAP1 PUSH2 0x372E JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3281 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x31FB JUMPI PUSH1 0x1 ADD PUSH2 0x3257 JUMP JUMPDEST SWAP1 PUSH2 0x111D SWAP6 POP SWAP2 PUSH2 0x32AD PUSH2 0x32A6 PUSH1 0x1 SWAP5 SWAP7 SWAP6 SWAP7 PUSH2 0x12FF JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x12FF JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x355A JUMP JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP5 PUSH1 0x1 DUP7 EQ PUSH2 0x3444 JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x3412 JUMPI PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP7 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x33D8 JUMPI JUMPDEST POP SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x339A JUMPI POP POP POP SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x3331 SWAP4 DUP8 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH4 0x48ED85BF PUSH1 0xE1 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x305D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3360 JUMPI JUMPDEST POP ISZERO PUSH2 0x3351 JUMPI PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH4 0xE8BEE839 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3392 JUMPI JUMPDEST DUP2 PUSH2 0x337B PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x338C SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3343 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x336E JUMP JUMPDEST SWAP1 SWAP2 SWAP8 SWAP7 PUSH2 0x33A8 DUP10 DUP8 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x33CD JUMPI DUP3 ISZERO PUSH2 0x31FB JUMPI DUP2 DUP2 GT PUSH2 0x31EC JUMPI DUP1 PUSH1 0x1 SWAP3 SUB SWAP9 ADD SWAP9 JUMPDEST ADD SWAP2 SWAP1 PUSH2 0x3302 JUMP JUMPDEST POP SWAP7 SWAP8 PUSH1 0x1 SWAP1 PUSH2 0x33C5 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x340A JUMPI JUMPDEST DUP2 PUSH2 0x33F3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3404 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x32FD JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x33E6 JUMP JUMPDEST POP POP PUSH0 SWAP4 SWAP2 SWAP3 SWAP4 JUMPDEST DUP3 DUP2 LT PUSH2 0x342D JUMPI POP POP POP PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3437 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x31FB JUMPI PUSH1 0x1 ADD PUSH2 0x341A JUMP JUMPDEST SWAP1 PUSH2 0x111D SWAP6 POP SWAP2 PUSH2 0x32AD PUSH2 0x32A6 PUSH0 SWAP5 SWAP7 SWAP6 SWAP7 PUSH2 0x12FF JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x34A1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x3492 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x347F PUSH1 0x40 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 CALLDATASIZE DUP4 CALLDATACOPY DUP4 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x2CD44AC3 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D DUP2 PUSH2 0x34B3 DUP2 PUSH0 PUSH2 0x1389 JUMP JUMPDEST SUB DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x34DE JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x3492 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x347F PUSH1 0x40 DUP5 PUSH2 0x11DE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D DUP2 PUSH2 0x34B3 DUP2 PUSH1 0x1 PUSH2 0x1389 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x351B JUMPI RETURNDATASIZE SWAP1 PUSH2 0x3502 DUP3 PUSH2 0x140A JUMP JUMPDEST SWAP2 PUSH2 0x3510 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST DUP2 MLOAD SWAP2 SWAP1 PUSH1 0x41 DUP4 SUB PUSH2 0x3550 JUMPI PUSH2 0x3549 SWAP3 POP PUSH1 0x20 DUP3 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP5 ADD MLOAD SWAP4 ADD MLOAD PUSH0 BYTE SWAP1 PUSH2 0x378A JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP2 PUSH1 0x2 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP2 SWAP5 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x371C JUMPI SWAP1 DUP6 SWAP3 SWAP2 DUP4 PUSH2 0x369F JUMPI JUMPDEST PUSH1 0x20 SWAP3 SWAP2 SWAP1 ISZERO PUSH2 0x3618 JUMPI PUSH2 0x35AE SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH4 0xE49617E1 PUSH1 0xE0 SHL DUP4 MSTORE DUP8 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x35DE JUMPI JUMPDEST POP ISZERO PUSH2 0x35CF JUMPI JUMPDEST PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH4 0xCCF3BB27 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3610 JUMPI JUMPDEST DUP2 PUSH2 0x35F9 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x360A SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x35C0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x35EC JUMP JUMPDEST PUSH2 0x363F SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH4 0xE60C3505 PUSH1 0xE0 SHL DUP4 MSTORE DUP8 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3665 JUMPI JUMPDEST POP PUSH2 0x35C7 JUMPI PUSH4 0xBD8BA84D PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3697 JUMPI JUMPDEST DUP2 PUSH2 0x3680 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3691 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3651 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3673 JUMP JUMPDEST SWAP5 SWAP2 SWAP1 SWAP3 POP PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x36E2 JUMPI JUMPDEST POP ISZERO PUSH2 0x31FB JUMPI DUP2 DUP7 GT PUSH2 0x31EC JUMPI SWAP1 DUP6 SWAP1 SUB SWAP4 DUP6 SWAP3 SWAP1 PUSH2 0x357D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3714 JUMPI JUMPDEST DUP2 PUSH2 0x36FD PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x370E SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x36C8 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x36F0 JUMP JUMPDEST POP POP POP SWAP1 SWAP2 PUSH2 0x31FB JUMPI PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x3736 JUMPI POP JUMP JUMPDEST DUP1 SELFBALANCE LT PUSH2 0x3774 JUMPI PUSH0 DUP1 DUP1 DUP1 SWAP4 CALLER GAS CALL PUSH2 0x374D PUSH2 0x34F1 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x3756 JUMPI POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3765 JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH4 0xD6BDA275 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SELFBALANCE PUSH4 0xCF479181 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x3801 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x1CD5 JUMPI PUSH0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x37F7 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL DUP15 MLOAD PUSH21 0xF05D059AC048AF06E78A8AC517B8C255C9A61DB83 SWAP13 0xE6 0x2D 0xAA 0xA6 0xAB 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "976:28530:1:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;976:28530:1;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;976:28530:1;;2476:1;759:14:6;;976:28530:1;783:14:6;;-1:-1:-1;807:14:6;;3501:45:20;;;:::i;:::-;3493:53;;3567:51;;;:::i;:::-;3556:62;;976:28530:1;;3642:22:20;;3628:36;;;;976:28530:1;3691:25:20;;3674:42;;;3744:13;3727:30;;976:28530:1;;4304:80:20;976:28530:1;4304:80:20;;2079:95;;;;976:28530:1;2079:95:20;;;;;;;3744:13;759:14:6;2079:95:20;;;4378:4;783:14:6;2079:95:20;;;783:14:6;4304:80:20;;;807:14:6;4304:80:20;;:::i;:::-;976:28530:1;4294:91:20;;3767:48;;4378:4;3825:27;;976:28530:1;;-1:-1:-1;;;;;976:28530:1;;;;2163:12:7;976:28530:1;2476:1;976:28530;;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;2476:1;976:28530;;;;;;;;;;;2163:12:7;976:28530:1;;2531:31;2527:86;;2623:26;;976:28530;;;;;;;;759:14:6;976:28530:1;;;;;783:14:6;976:28530:1;;;;;807:14:6;976:28530:1;;;;;3767:48:20;976:28530:1;;;;;3727:30:20;976:28530:1;;;;;3825:27:20;976:28530:1;;;;;3628:36:20;976:28530:1;;;;;3674:42:20;976:28530:1;;;;;3493:53:20;976:28530:1;;;;;3556:62:20;976:28530:1;;;;;2623:26;976:28530;;;;;;;;;;;;;;;;;;;;;;;;;;2527:86;2585:17;;;-1:-1:-1;2585:17:1;;-1:-1:-1;2585:17:1;976:28530;;;;-1:-1:-1;976:28530:1;;;;;;;;;;2163:12:7;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;;;;;;;;2476:1;976:28530;;;;;;;;;;;;;2163:12:7;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:1;976:28530;;;;;;;;;;;;;;;;2163:12:7;-1:-1:-1;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;976:28530:1;;2476:1;976:28530;;;;;;-1:-1:-1;976:28530:1;;;;;;;;-1:-1:-1;976:28530:1;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;;;;;;-1:-1:-1;;976:28530:1;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;:::o;2887:340:16:-;;976:28530:1;;3032:2:16;3010:24;;3006:215;3032:2;;;976:28530:1;;1854:2:16;976:28530:1;;1840:16:16;1836:72;;3032:2;976:28530:1;;;;2079:95:20;3032:2:16;976:28530:1;;;;1949:36:16;3050:27;:::o;976:28530:1:-;;;;3032:2:16;976:28530:1;;;;;1949:36:16;3050:27;:::o;1836:72::-;976:28530:1;3032:2:16;976:28530:1;;;1879:18:16;;;;;;;;;;;;976:28530:1;;;;;;;;;;;;;;;;2482:1;976:28530;;;;;;1854:2:16;976:28530:1;-1:-1:-1;;976:28530:1;;;1879:18:16;;;;3006:215;-1:-1:-1;;;;;976:28530:1;;;;2482:1;976:28530;;;;;;;;;;;3006:215:16;3032:2;976:28530:1;;;;;;;;;;3006:215:16;976:28530:1;3032:2:16;976:28530:1;;;;;;;;;;;;2482:1;976:28530;;;;;;;;;;;;;;;;;;;2482:1;976:28530;1390:66:16;3168:42;:::o;976:28530:1:-;;;;-1:-1:-1;976:28530:1;;;;;;;;;;2482:1;976:28530;;;2482:1;976:28530;;2482:1;976:28530;;;;;;;;;;;;;;;;;;;;;2482:1;976:28530;1390:66:16;3168:42;:::o;976:28530:1:-;;;;;;;;;;;;;;;;;;;;;;;3032:2:16;976:28530:1;;;;;;;;;;;;;;;;;2482:1;976:28530;;;3032:2:16;2482:1:1;976:28530;;;;;;;;;;;;;;;;;;;;;;;;2482:1;976:28530;;;;;;;;;;;;;2887:340:16;;976:28530:1;;3032:2:16;3010:24;;3006:215;3032:2;;;976:28530:1;;1854:2:16;976:28530:1;;1840:16:16;1836:72;;3032:2;976:28530:1;;;;2079:95:20;3032:2:16;976:28530:1;;;;1949:36:16;3050:27;:::o;3006:215::-;-1:-1:-1;;;;;976:28530:1;;;;2476:1;976:28530;2476:1;976:28530;;;;;;;;;3006:215:16;3032:2;976:28530:1;;;;;;;;;;3006:215:16;976:28530:1;3032:2:16;976:28530:1;;;;;;;;;;;;;;;;;;;;2476:1;976:28530;;;;;;;;;;;2476:1;976:28530;1390:66:16;3168:42;:::o;976:28530:1:-;;;;-1:-1:-1;976:28530:1;;;;;;;;;;2476:1;976:28530;;;;;;;;;;;;;;;2476:1;976:28530;;;;;;;;;;;;2476:1;976:28530;1390:66:16;3168:42;:::o;976:28530:1:-;;;;;;;;;;;;;;;;;;;;;;;3032:2:16;2476:1:1;976:28530;;;;;;;;;;;;;;;;2476:1;976:28530;;;3032:2:16;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:1;976:28530;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_decode_address": {
                  "entryPoint": 4094,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_address_19266": {
                  "entryPoint": 4072,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_MultiDelegatedRevocationRequest_calldata_dyn_calldata": {
                  "entryPoint": 3988,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_available_length_array_struct_AttestationRequestData_dyn": {
                  "entryPoint": 5647,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_available_length_array_struct_RevocationRequestData_dyn": {
                  "entryPoint": 4670,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_bool_fromMemory": {
                  "entryPoint": 6534,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_struct_AttestationRequestData": {
                  "entryPoint": 5157,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_RevocationRequestData": {
                  "entryPoint": 4630,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_struct_SchemaRecord_fromMemory": {
                  "entryPoint": 6547,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_Signature": {
                  "entryPoint": 4781,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_uint64": {
                  "entryPoint": 4843,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes32_dyn": {
                  "entryPoint": 4114,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_Attestation_dyn_array_uint256_dyn": {
                  "entryPoint": 12381,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_array_uint256_dyn": {
                  "entryPoint": 4171,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_packed_bytes32_bytes32_uint8": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 4036,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_storage": {
                  "entryPoint": 5001,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_struct_Attestation": {
                  "entryPoint": 4222,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_array_struct_AttestationRequestData_calldata_dyn_calldata": {
                  "entryPoint": 5594,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_array_struct_Signature_calldata_dyn_calldata": {
                  "entryPoint": 5880,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_struct_AttestationRequestData_calldata": {
                  "entryPoint": 5446,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_array_bytes32_dyn_dyn": {
                  "entryPoint": 5487,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_struct_AttestationRequestData_dyn": {
                  "entryPoint": 5345,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_struct_Attestation_dyn": {
                  "entryPoint": 6758,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_struct_RevocationRequestData_dyn": {
                  "entryPoint": 5754,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_uint256_dyn": {
                  "entryPoint": 5830,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_struct_struct_Attestation": {
                  "entryPoint": 5933,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_struct_struct_AttestationsResult": {
                  "entryPoint": 8270,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_struct_RevocationRequestData_dyn": {
                  "entryPoint": 4607,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 5130,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "calldata_array_index_access_bytes32_dyn_calldata": {
                  "entryPoint": 4929,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "calldata_array_index_access_struct_MultiAttestationRequest_calldata_dyn_calldata": {
                  "entryPoint": 5560,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "calldata_array_index_access_struct_MultiDelegatedRevocationRequest_calldata_dyn_calldata": {
                  "entryPoint": 4384,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "checked_sub_uint256": {
                  "entryPoint": 4896,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 4945,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_returndata": {
                  "entryPoint": 13553,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 4574,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "finalize_allocation_19263": {
                  "entryPoint": 4418,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "finalize_allocation_19337": {
                  "entryPoint": 4465,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "finalize_allocation_19338": {
                  "entryPoint": 4492,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "finalize_allocation_19343": {
                  "entryPoint": 4519,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "finalize_allocation_19366": {
                  "entryPoint": 4546,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_attest": {
                  "entryPoint": 9786,
                  "id": 1307,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "fun_attest_19271": {
                  "entryPoint": 8295,
                  "id": 1307,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "fun_domainSeparatorV4": {
                  "entryPoint": 11840,
                  "id": 5816,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "fun_hashTypedDataV4": {
                  "entryPoint": 12124,
                  "id": 5853,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_isAttestationValid": {
                  "entryPoint": null,
                  "id": 1026,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_isValidSignatureNow": {
                  "entryPoint": 12162,
                  "id": 6068,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "fun_mergeUIDs": {
                  "entryPoint": 11257,
                  "id": 2018,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "fun_refund": {
                  "entryPoint": 14126,
                  "id": 1855,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_resolveAttestation": {
                  "entryPoint": 13658,
                  "id": 1603,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "fun_resolveAttestations": {
                  "entryPoint": 12980,
                  "id": 1799,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "fun_resolveAttestations_19381": {
                  "entryPoint": 12490,
                  "id": 1799,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "fun_revoke": {
                  "entryPoint": 7392,
                  "id": 1485,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "fun_revokeOffchain": {
                  "entryPoint": 7842,
                  "id": 1926,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "fun_revoke_19277": {
                  "entryPoint": 6837,
                  "id": 1485,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "fun_timestamp": {
                  "entryPoint": 11361,
                  "id": 1885,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_toString": {
                  "entryPoint": 11475,
                  "id": 4057,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_toStringWithFallback": {
                  "entryPoint": 13498,
                  "id": 3787,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_toStringWithFallback_19278": {
                  "entryPoint": 13403,
                  "id": 3787,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_tryRecover": {
                  "entryPoint": 14218,
                  "id": 5607,
                  "parameterSlots": 4,
                  "returnSlots": 3
                },
                "fun_tryRecover_5419": {
                  "entryPoint": 13600,
                  "id": 5419,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "fun_verifyAttest": {
                  "entryPoint": 7974,
                  "id": 2826,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_verifyRevoke": {
                  "entryPoint": 6187,
                  "id": 2908,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "increment_uint256": {
                  "entryPoint": 6173,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_struct_RevocationRequestData_dyn": {
                  "entryPoint": 4876,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "memory_array_index_access_struct_RevocationRequestData_dyn_19269": {
                  "entryPoint": 4863,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_calldatat_address": {
                  "entryPoint": 5467,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_storage_reference_type_struct_Attestation": {
                  "entryPoint": 6007,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "update_storage_value_offsett_uint64_to_uint64": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {
                "150": [
                  {
                    "length": 32,
                    "start": 461
                  },
                  {
                    "length": 32,
                    "start": 6866
                  },
                  {
                    "length": 32,
                    "start": 7425
                  },
                  {
                    "length": 32,
                    "start": 8368
                  },
                  {
                    "length": 32,
                    "start": 9866
                  }
                ],
                "2532": [
                  {
                    "length": 32,
                    "start": 2077
                  }
                ],
                "2534": [
                  {
                    "length": 32,
                    "start": 2120
                  }
                ],
                "2536": [
                  {
                    "length": 32,
                    "start": 2163
                  }
                ],
                "5714": [
                  {
                    "length": 32,
                    "start": 11897
                  }
                ],
                "5716": [
                  {
                    "length": 32,
                    "start": 12086
                  }
                ],
                "5718": [
                  {
                    "length": 32,
                    "start": 11843
                  }
                ],
                "5720": [
                  {
                    "length": 32,
                    "start": 11976
                  }
                ],
                "5722": [
                  {
                    "length": 32,
                    "start": 12014
                  }
                ],
                "5725": [
                  {
                    "length": 32,
                    "start": 1745
                  }
                ],
                "5728": [
                  {
                    "length": 32,
                    "start": 1789
                  }
                ]
              },
              "linkReferences": {},
              "object": "6101206040526004361015610012575f80fd5b5f3560e01c80630eabf66014610d9357806312b11a1714610d5957806313893f6114610cea57806317d7de7c14610c205780632d0335ab14610be85780633c04271514610af857806344adc90e14610a1a57806346926267146109da5780634cb7e9e5146109295780634d0030701461090057806354fd4d50146107fe57806379f7573a1461078657806384b0196e146106b957806395411525146104c6578063a3112a641461047b578063a6d4dbc7146103a4578063b469318d14610357578063b83010d31461031d578063cf190f34146102f3578063d45c4435146102c0578063e30bb5631461028c578063e71ff3651461021e578063ed24911d146101fc578063f10b5cc8146101b85763f17325e71461012d575f80fd5b60203660031901126101b4576004356001600160401b0381116101b45780600401604060031983360301126101b45760206101a481936101ab936101866101726114e1565b92610181602436920184611546565b611425565b61018f836112ff565b52610199826112ff565b503491339135612067565b01516112ff565b51604051908152f35b5f80fd5b346101b4575f3660031901126101b4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b4575f3660031901126101b4576020610216612e40565b604051908152f35b346101b45760203660031901126101b4576004356001600160401b0381116101b45761024e903690600401610f94565b906001600160401b034216915f5b81811061026e57602084604051908152f35b80610286856102806001948688611341565b35612c61565b0161025c565b346101b45760203660031901126101b45760206102b66004355f52600460205260405f2054151590565b6040519015158152f35b346101b45760203660031901126101b4576004355f52600560205260206001600160401b0360405f205416604051908152f35b346101b45760203660031901126101b45760206001600160401b0342166102168160043533611ea2565b346101b4575f3660031901126101b45760206040517fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e758152f35b346101b45760403660031901126101b4576001600160a01b03610378610fe8565b165f52600660205260405f206024355f5260205260206001600160401b0360405f205416604051908152f35b6101003660031901126101b4576040516103bd81611142565b6004358082526103cc36611216565b602083015260603660631901126101b4576040516103e98161118c565b60643560ff811681036101b4578152608435602082015260a43560408083019190915283015260c4356001600160a01b03811681036101b45780606084015260e4356001600160401b03811681036101b4578361044d91608061047996015261182b565b61045561167a565b61045e36611216565b610467826112ff565b52610471816112ff565b503492611ab5565b005b346101b45760203660031901126101b45761049461172d565b506004355f5260046020526104c26104ae60405f20611777565b60405191829160208352602083019061107e565b0390f35b60203660031901126101b4576004356001600160401b0381116101b4576104f1903690600401610f94565b6104fa8161156f565b5f9290915f198101913491855b818110610527576104c261051b8888612bf9565b60405191829182611012565b61053681838598969798611120565b9661054460208901896115da565b929091831580156106a1575b6106925789965f98959895604089019560608a019a60808b359b0135996001600160401b038b16809b1415995b83811015610624578f906105a08b61059a8360051b8d018d611546565b936116f8565b821015610610578f6105b28e9161155b565b906101b4578f908f906105ef61060a946105de600198604051966105d588611142565b87523690611425565b6020860152369060608802016112ad565b6040840152858060a01b031660608301526080820152611f26565b0161057d565b634e487b7160e01b5f52603260045260245ffd5b509a8d9e50839a50610660949c93929199506001985061065a6106699698889f6106529060209a149661155b565b93369161160f565b9061263a565b95865190611320565b94018051610677898961130c565b52610682888861130c565b5051510196949592939201610507565b63251f56a160e21b5f5260045ffd5b506106af60408b018b6116f8565b9050841415610550565b346101b4575f3660031901126101b4576107586106f57f000000000000000000000000000000000000000000000000000000000000000061345b565b6104c26107217f00000000000000000000000000000000000000000000000000000000000000006134ba565b610766604051916107336020846111de565b5f83525f368137604051958695600f60f81b875260e0602088015260e0870190610fc4565b908582036040870152610fc4565b904660608501523060808501525f60a085015283820360c085015261104b565b346101b45760203660031901126101b457600435335f52600360205260405f205490818111156107ef577f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb791604091335f52600360205280835f205582519182526020820152a1005b633ab3447f60e11b5f5260045ffd5b346101b4575f3660031901126101b4576104c260206108ec60016108417f0000000000000000000000000000000000000000000000000000000000000000612cd3565b818461086c7f0000000000000000000000000000000000000000000000000000000000000000612cd3565b81806108977f0000000000000000000000000000000000000000000000000000000000000000612cd3565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826111de565b604051918291602083526020830190610fc4565b346101b45760203660031901126101b45760206001600160401b03421661021681600435612c61565b60203660031901126101b4576004356001600160401b0381116101b457610954903690600401610f94565b5f19810191905f90345b81831061096757005b6109728383866115b8565b6020810135601e19823603018112156101b4578101918235926001600160401b0384116101b457602001928060061b360384136101b457600193826109cc926109d2956109c58c8b14943393369161123e565b9035611ce0565b90611320565b92019161095e565b60603660031901126101b4576104796109f161167a565b6109fa36611216565b610a03826112ff565b52610a0d816112ff565b5034903390600435611ab5565b60203660031901126101b4576004356001600160401b0381116101b457610a45903690600401610f94565b90610a4f8261156f565b915f9134905f925f198101905b808510610a70576104c261051b8789612bf9565b9091929394610a808683866115b8565b906020820191610a9083826115da565b90501561069257610ad0610ac789898885610ac0610ab260019a6020996115da565b93909514943393369161160f565b903561263a565b97885190611320565b96018051610ade898b61130c565b52610ae9888a61130c565b50515101950193929190610a5c565b60203660031901126101b4576004356001600160401b0381116101b457806004019060e060031982360301126101b457604051610b3481611142565b82359283825260248301938435946001600160401b0386116101b457610be06101ab95610bc76101a495610bb460209a98610b768c9a60043691880101611425565b8a820152610b8736604487016112ad565b6040820152610baa60c460a4870196610b9f88610ffe565b6060850152016112eb565b6080820152611f26565b610181610bbf6114e1565b953692611546565b610bd0846112ff565b52610bda836112ff565b5061155b565b903492612067565b346101b45760203660031901126101b4576001600160a01b03610c09610fe8565b165f526003602052602060405f2054604051908152f35b346101b4575f3660031901126101b4576040515f600254610c4081611351565b8084529060018116908115610cc65750600114610c68575b6104c2836108ec818503826111de565b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b808210610cac575090915081016020016108ec610c58565b919260018160209254838588010152019101909291610c94565b60ff191660208086019190915291151560051b840190910191506108ec9050610c58565b346101b45760203660031901126101b4576004356001600160401b0381116101b457610d1a903690600401610f94565b906001600160401b034216915f5b818110610d3a57602084604051908152f35b80610d5385610d4c6001948688611341565b3533611ea2565b01610d28565b346101b4575f3660031901126101b45760206040517ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768152f35b60203660031901126101b4576004356001600160401b0381116101b457610dbe903690600401610f94565b5f198101915f91345b818410610dd057005b610ddb848385611120565b60a0813603126101b457604051610df181611142565b8135815260208201356001600160401b0381116101b457820136601f820112156101b457610e2690369060208135910161123e565b906020810191825260408301356001600160401b0381116101b457830136601f820112156101b457803590610e5a826111ff565b91610e6860405193846111de565b808352602060608185019202830101913683116101b457602001905b828210610f7a5750505060408201818152610eb46080610ea660608801610ffe565b9660608601978852016112eb565b936080840194855251938451928315908115610f6e575b50610692575f5b838110610f0b57505091519351600195610f039590946109cc94508a8c14935085926001600160a01b031691611ce0565b930192610dc7565b600190610f688651610f1d838a61130c565b51610f2984885161130c565b51858060a01b038c5116906001600160401b038851169260405194610f4d86611142565b8552602085015260408401526060830152608082015261182b565b01610ed2565b9050518314158c610ecb565b6020606091610f8936856112ad565b815201910190610e84565b9181601f840112156101b4578235916001600160401b0383116101b4576020808501948460051b0101116101b457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101b457565b35906001600160a01b03821682036101b457565b60206040818301928281528451809452019201905f5b8181106110355750505090565b8251845260209384019390920191600101611028565b90602080835192838152019201905f5b8181106110685750505090565b825184526020938401939092019160010161105b565b9061014061012061111d9380518452602081015160208501526001600160401b0360408201511660408501526001600160401b0360608201511660608501526001600160401b03608082015116608085015260a081015160a085015260018060a01b0360c08201511660c085015260018060a01b0360e08201511660e08501526101008101511515610100850152015191816101208201520190610fc4565b90565b91908110156106105760051b81013590609e19813603018212156101b4570190565b60a081019081106001600160401b0382111761115d57604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761115d57604052565b606081019081106001600160401b0382111761115d57604052565b60c081019081106001600160401b0382111761115d57604052565b61014081019081106001600160401b0382111761115d57604052565b90601f801991011681019081106001600160401b0382111761115d57604052565b6001600160401b03811161115d5760051b60200190565b60409060231901126101b4576040519061122f82611171565b60243582526044356020830152565b92919261124a826111ff565b9361125860405195866111de565b602085848152019260061b8201918183116101b457925b82841061127c5750505050565b6040848303126101b4576020604091825161129681611171565b86358152828701358382015281520193019261126f565b91908260609103126101b4576040516112c58161118c565b8092803560ff811681036101b45760409182918452602081013560208501520135910152565b35906001600160401b03821682036101b457565b8051156106105760200190565b80518210156106105760209160051b010190565b9190820391821161132d57565b634e487b7160e01b5f52601160045260245ffd5b91908110156106105760051b0190565b90600182811c9216801561137f575b602083101461136b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611360565b5f929181549161139883611351565b80835292600181169081156113ed57506001146113b457505050565b5f9081526020812093945091925b8383106113d3575060209250010190565b6001816020929493945483858701015201910191906113c2565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b03811161115d57601f01601f191660200190565b919060c0838203126101b4576040519061143e826111a7565b819361144981610ffe565b8352611457602082016112eb565b6020840152604081013580151581036101b45760408401526060810135606084015260808101356001600160401b0381116101b45781019082601f830112156101b4578135926114a68461140a565b906114b460405192836111de565b848252602085850101116101b4575f60208560a09682889701838601378301015260808501520135910152565b604080519091906114f283826111de565b6001815291601f1901825f5b82811061150a57505050565b602090604051611519816111a7565b5f81525f838201525f60408201525f6060820152606060808201525f60a0820152828285010152016114fe565b90359060be19813603018212156101b4570190565b356001600160a01b03811681036101b45790565b90611579826111ff565b61158660405191826111de565b8281528092611597601f19916111ff565b01905f5b8281106115a757505050565b80606060208093850101520161159b565b91908110156106105760051b81013590603e19813603018212156101b4570190565b903590601e19813603018212156101b457018035906001600160401b0382116101b457602001918160051b360383136101b457565b92919061161b816111ff565b9361162960405195866111de565b602085838152019160051b8101918383116101b45781905b83821061164f575050505050565b81356001600160401b0381116101b45760209161166f8784938701611425565b815201910190611641565b6040805190919061168b83826111de565b6001815291601f1901825f5b8281106116a357505050565b6020906040516116b281611171565b5f81525f8382015282828501015201611697565b906116d0826111ff565b6116dd60405191826111de565b82815280926116ee601f19916111ff565b0190602036910137565b903590601e19813603018212156101b457018035906001600160401b0382116101b4576020019160608202360383136101b457565b6040519061173a826111c2565b6060610120835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201520152565b906006610120604051611789816111c2565b611819819580548352600181015460208401526001600160401b0360028201548181166040860152818160401c16606086015260801c166080840152600381015460a084015260018060a01b0360048201541660c084015260ff600582015460018060a01b03811660e086015260a01c1615156101008401526118126040518096819301611389565b03846111de565b0152565b5f19811461132d5760010190565b608081016001600160401b038151168015159081611973575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160208251920151845f5260036020526001600160401b0360405f20928354936118968561181d565b90555116926040519460208601967fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75885260408701526060860152608085015260a084015260c083015260e082015260e081526118f5610100826111de565b519020612f5c565b9051602083810151604080860151955181519384019290925282019490945260f89390931b6001600160f81b0319166060840152604183526001600160a01b03166119496061846111de565b612f82565b1561195557565b638baa579f60e01b5f5260045ffd5b631ab7da6b60e01b5f5260045ffd5b90506001600160401b034216115f611844565b519081151582036101b457565b6020818303126101b4578051906001600160401b0382116101b45701906080828203126101b45760405191608083018381106001600160401b0382111761115d576040528051835260208101516001600160a01b03811681036101b4576020840152611a0160408201611986565b60408401526060810151906001600160401b0382116101b4570181601f820112156101b457805190611a328261140a565b92611a4060405194856111de565b828452602083830101116101b457815f9260208093018386015e83010152606082015290565b90611a70826111ff565b611a7d60405191826111de565b8281528092611a8e601f19916111ff565b01905f5b828110611a9e57505050565b602090611aa961172d565b82828501015201611a92565b6040516351753e3760e11b81526004810182905290915f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611cd5575f92611cb1575b50815115611c93578051611b1d81611a66565b93611b27826116c6565b95426001600160401b0316935f5b848110611b50575050505050509161111d93916001936130ca565b611b5a818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c6657825467ffffffffffffffff60801b191660808b901b67ffffffffffffffff60801b16179092556001938792908c90611c01908690611bfb90611777565b611777565b9261130c565b52611c0c848d61130c565b506020810151611c1c858f61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208d60c0611c53888a8060a01b039361130c565b510151169251604051908152a401611b35565b63905e710760e01b5f5260045ffd5b63157bd4c360e01b5f5260045ffd5b634ca8886760e01b5f5260045ffd5b635f9bd90760e11b5f5260045ffd5b63c5723b5160e01b5f5260045ffd5b611cce9192503d805f833e611cc681836111de565b810190611993565b905f611b0a565b6040513d5f823e3d90fd5b6040516351753e3760e11b8152600481018290529195949392915f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611cd5575f91611e88575b50805115611c93578651611d4c81611a66565b92611d56826116c6565b945f996001600160401b0342169a5b848110611d7c57505050505061111d9596506130ca565b611d86818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c66578f600195611bf6611e19928b96908154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b611e23858d61130c565b52611e2e848c61130c565b506020810151611e3e858e61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208c60c0611e75888a8060a01b039361130c565b510151169251604051908152a401611d65565b611e9c91503d805f833e611cc681836111de565b5f611d39565b60018060a01b031691825f52600660205260405f2090825f52816020526001600160401b0360405f205416611f17576001600160401b0391835f5260205260405f20828216831982541617905516917f92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a22295f80a4565b63ec9d6eeb60e01b5f5260045ffd5b608081016001600160401b03815116801515908161203b575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160018060a01b03825116916001600160401b03602082015116906040810151151560608201519060a060808401516020815191012093015193885f5260036020526001600160401b0360405f2096875497611fc38961181d565b90555116966040519860208a019a7ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768c5260408b015260608a0152608089015260a088015260c087015260e086015261010085015261012084015261014083015261016082015261016081526118f5610180826111de565b90506001600160401b034216115f611f3f565b6040519061205b82611171565b60606020835f81520152565b919260e05261207461204e565b5080519061208061204e565b6101005261208d826116c6565b61010051602001526040516351753e3760e11b8152600481018490525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611cd5575f60805261261e575b506080515115611c935790916120fe83611a66565b60a05261210a836116c6565b60c0525f915b83831061213e575050505050612132600160e05160c05160a0516080516132b4565b61010051526101005190565b61214e838297939495969761130c565b519160208301956001600160401b03875116801515908161260a575b506125fb576040608051015115806125ee575b611c75576001600160401b0360608501519751169660018060a01b0385511660408601511515906080870151926040519a6121b78c6111c2565b5f8c528960208d01526001600160401b03421660408d015260608c01525f60808c015260a08b015260c08a015260018060a01b038a1660e08a01526101008901526101208801525f5b6020880151886122d06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156122f4575060010163ffffffff16612200565b905097969094959197939293808252805f52600460205260405f209180518355602081015160018401556123a2600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d57899461242c6006840154611351565b601f8111612596575b50602090601f831160011461252857600692915f918361251d575b50508160011b915f199060031b1c1916179101555b6060850151806124f9575b50936001946124818560a05161130c565b5261248e8460a05161130c565b5060a08101516124a08560c05161130c565b52816124b385602061010051015161130c565b52848060a01b039051166040519182527f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b356020868060a01b038b1693a401919290612110565b6125109193505f52600460205260405f2054151590565b15611ca25786915f612470565b015190505f80612450565b90600684015f52805f20915f5b601f198516811061257b5750918391600193600695601f19811610612563575b505050811b01910155612465565b01515f1960f88460031b161c191690555f8080612555565b8183015184558d985060019093019260209283019201612535565b90919293949550600684015f5260205f20601f840160051c8101602085106125e7575b908c979695949392915b601f830160051c820181106125d9575050612435565b5f81558d98506001016125c3565b50806125b9565b506040840151151561217d565b6308e8b93760e01b5f5260045ffd5b90506001600160401b03421610155f61216a565b612631903d805f833e611cc681836111de565b6080525f6120e9565b919293909360c05260e05261264d61204e565b5082519061265961204e565b61010052612666826116c6565b61010051602001526040516351753e3760e11b815260048101829052935f856024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa948515611cd5575f95612bdd575b50845115611c9357906126d483611a66565b6080526126e0836116c6565b60a0525f915b83831061270b5750505050506121329060e0519060c0519060a05190608051906132b4565b90929491939561271b858361130c565b519260208401966001600160401b038851168015159081612bc9575b506125fb5760408201511580612bbc575b611c7557606085015197518551604080880151608089015191519b9193901515926001600160a01b031691906001600160401b03168a60208e61278a816111c2565b5f815201528c60406001600160401b03421691015260608d01525f60808d015260a08c015260c08b015260018060a01b038b1660e08b01526101008a01526101208901525f5b6020890151896128a06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156128c4575060010163ffffffff166127d0565b9050989691979095949298808252805f52600460205260405f20918051835560208101516001840155612971600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d5788946129fb6006840154611351565b601f8111612b64575b50602090601f8311600114612af657600692915f9183612aeb575b50508160011b915f199060031b1c1916179101555b606085015180612ac7575b5093600194612a508560805161130c565b52612a5d8460805161130c565b5060a0810151612a6f8560a05161130c565b5281612a8285602061010051015161130c565b52848060a01b039051166040519182527f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b356020868060a01b038b1693a40191906126e6565b612ade9193505f52600460205260405f2054151590565b15611ca25785915f612a3f565b015190505f80612a1f565b90600684015f52805f20915f5b601f1985168110612b495750918391600193600695601f19811610612b31575b505050811b01910155612a34565b01515f1960f88460031b161c191690555f8080612b23565b8183015184558c985060019093019260209283019201612b03565b90919293949550600684015f5260205f20601f840160051c810160208510612bb5575b908b979695949392915b601f830160051c82018110612ba7575050612a04565b5f81558c9850600101612b91565b5080612b87565b5060408501511515612748565b90506001600160401b03421610155f612737565b612bf29195503d805f833e611cc681836111de565b935f6126c2565b90612c03906116c6565b905f8151915f5b838110612c18575050505090565b612c22818361130c565b5180515f915b818310612c3a57505050600101612c0a565b90919460018091612c4b888561130c565b51612c56828c61130c565b520195019190612c28565b90815f5260056020526001600160401b0360405f205416612cc4576001600160401b0390825f52600560205260405f20828216831982541617905516907f5aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459f5f80a3565b6317133ca360e11b5f5260045ffd5b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b821015612e1d575b806d04ee2d6d415b85acef8100000000600a921015612e02575b662386f26fc10000811015612dee575b6305f5e100811015612ddd575b612710811015612dce575b6064811015612dc0575b1015612db5575b600a60216001840193612d5a8561140a565b94612d6860405196876111de565b808652612d77601f199161140a565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353048015612db057600a9091612d82565b505090565b600190910190612d48565b606460029104930192612d41565b61271060049104930192612d37565b6305f5e10060089104930192612d2c565b662386f26fc1000060109104930192612d1f565b6d04ee2d6d415b85acef810000000060209104930192612d0f565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8104612cf5565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612f33575b15612e9b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152612f2d60c0826111de565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612e72565b604290612f67612e40565b906040519161190160f01b8352600283015260228201522090565b9190823b612fd15790612f9491613520565b506004811015612fbd57159182612faa57505090565b6001600160a01b03918216911614919050565b634e487b7160e01b5f52602160045260245ffd5b915f9261300761301585946040519283916020830195630b135d3f60e11b87526024840152604060448401526064830190610fc4565b03601f1981018352826111de565b51915afa6130216134f1565b8161304f575b81613030575090565b90506020818051810103126101b45760200151630b135d3f60e11b1490565b905060208151101590613027565b929160408401936040815282518095526060810194602060608260051b8401019401905f5b81811061309f5750505061111d939450602081840391015261104b565b9091946020806130bb600193605f19888203018c52895161107e565b97019801910196919096613082565b9391908051946001861461328e57602001516001600160a01b031690811561324f57604051636723702360e11b81525f9690602081600481875afa908115611cd5575f91613215575b50905f915b8183106131b9575050509160209161314793876040518096819582946388e5b2d960e01b84526004840161305d565b03925af1908115611cd5575f9161317f575b501561317057613167575090565b61111d9061372e565b63bf2f3a8b60e01b5f5260045ffd5b90506020813d6020116131b1575b8161319a602093836111de565b810103126101b4576131ab90611986565b5f613159565b3d915061318d565b909197966131c7898761130c565b51801561320a5782156131fb578181116131ec5780600192039801985b019190613118565b63044044a560e21b5f5260045ffd5b631574f9f360e01b5f5260045ffd5b5096976001906131e4565b90506020813d602011613247575b81613230602093836111de565b810103126101b45761324190611986565b5f613113565b3d9150613223565b50505f939192935b8281106132775750505061326a57505f90565b6132739061372e565b5f90565b613281818361130c565b516131fb57600101613257565b9061111d9550916132ad6132a66001949695966112ff565b51916112ff565b519161355a565b9391908051946001861461344457602001516001600160a01b031690811561341257604051636723702360e11b81525f9690602081600481875afa908115611cd5575f916133d8575b50905f915b81831061339a575050509160209161333193876040518096819582946348ed85bf60e11b84526004840161305d565b03925af1908115611cd5575f91613360575b501561335157613167575090565b63e8bee83960e01b5f5260045ffd5b90506020813d602011613392575b8161337b602093836111de565b810103126101b45761338c90611986565b5f613343565b3d915061336e565b909197966133a8898761130c565b5180156133cd5782156131fb578181116131ec5780600192039801985b019190613302565b5096976001906133c5565b90506020813d60201161340a575b816133f3602093836111de565b810103126101b45761340490611986565b5f6132fd565b3d91506133e6565b50505f939192935b82811061342d5750505061326a57505f90565b613437818361130c565b516131fb5760010161341a565b9061111d9550916132ad6132a65f949695966112ff565b60ff81146134a15760ff811690601f8211613492576040519161347f6040846111de565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b5060405161111d816134b3815f611389565b03826111de565b60ff81146134de5760ff811690601f8211613492576040519161347f6040846111de565b5060405161111d816134b3816001611389565b3d1561351b573d906135028261140a565b9161351060405193846111de565b82523d5f602084013e565b606090565b8151919060418303613550576135499250602082015190606060408401519301515f1a9061378a565b9192909190565b50505f9160029190565b6020015191949290916001600160a01b031690811561371c57908592918361369f575b602092919015613618576135ae9160405194858094819363e49617e160e01b8352876004840152602483019061107e565b03925af1908115611cd5575f916135de575b50156135cf575b613167575090565b63ccf3bb2760e01b5f5260045ffd5b90506020813d602011613610575b816135f9602093836111de565b810103126101b45761360a90611986565b5f6135c0565b3d91506135ec565b61363f9160405194858094819363e60c350560e01b8352876004840152602483019061107e565b03925af1908115611cd5575f91613665575b506135c75763bd8ba84d60e01b5f5260045ffd5b90506020813d602011613697575b81613680602093836111de565b810103126101b45761369190611986565b5f613651565b3d9150613673565b9491909250604051636723702360e11b8152602081600481875afa908115611cd5575f916136e2575b50156131fb578186116131ec57908590039385929061357d565b90506020813d602011613714575b816136fd602093836111de565b810103126101b45761370e90611986565b5f6136c8565b3d91506136f0565b50505090916131fb5761326a57505f90565b806137365750565b804710613774575f80808093335af161374d6134f1565b90156137565750565b80511561376557602081519101fd5b63d6bda27560e01b5f5260045ffd5b4763cf47918160e01b5f5260045260245260445ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613801579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611cd5575f516001600160a01b038116156137f757905f905f90565b505f906001905f90565b5050505f916003919056fea2646970667358221220f48e51740f05d059ac048af06e78a8ac517b8c255c9a61db839ce62daaa6abf764736f6c634300081b0033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEABF660 EQ PUSH2 0xD93 JUMPI DUP1 PUSH4 0x12B11A17 EQ PUSH2 0xD59 JUMPI DUP1 PUSH4 0x13893F61 EQ PUSH2 0xCEA JUMPI DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0xC20 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0xBE8 JUMPI DUP1 PUSH4 0x3C042715 EQ PUSH2 0xAF8 JUMPI DUP1 PUSH4 0x44ADC90E EQ PUSH2 0xA1A JUMPI DUP1 PUSH4 0x46926267 EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0x4CB7E9E5 EQ PUSH2 0x929 JUMPI DUP1 PUSH4 0x4D003070 EQ PUSH2 0x900 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x7FE JUMPI DUP1 PUSH4 0x79F7573A EQ PUSH2 0x786 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0x95411525 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0xA3112A64 EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xA6D4DBC7 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0xB469318D EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0xB83010D3 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xCF190F34 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xD45C4435 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xE30BB563 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xE71FF365 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xF10B5CC8 EQ PUSH2 0x1B8 JUMPI PUSH4 0xF17325E7 EQ PUSH2 0x12D JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x40 PUSH1 0x3 NOT DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x1A4 DUP2 SWAP4 PUSH2 0x1AB SWAP4 PUSH2 0x186 PUSH2 0x172 PUSH2 0x14E1 JUMP JUMPDEST SWAP3 PUSH2 0x181 PUSH1 0x24 CALLDATASIZE SWAP3 ADD DUP5 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x1425 JUMP JUMPDEST PUSH2 0x18F DUP4 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0x199 DUP3 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP2 CALLER SWAP2 CALLDATALOAD PUSH2 0x2067 JUMP JUMPDEST ADD MLOAD PUSH2 0x12FF JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x216 PUSH2 0x2E40 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x24E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x26E JUMPI PUSH1 0x20 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH2 0x286 DUP6 PUSH2 0x280 PUSH1 0x1 SWAP5 DUP7 DUP9 PUSH2 0x1341 JUMP JUMPDEST CALLDATALOAD PUSH2 0x2C61 JUMP JUMPDEST ADD PUSH2 0x25C JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x2B6 PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH2 0x216 DUP2 PUSH1 0x4 CALLDATALOAD CALLER PUSH2 0x1EA2 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xB5D556F07587EC0F08CF386545CC4362C702A001650C2058002615EE5C9D1E75 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x378 PUSH2 0xFE8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x24 CALLDATALOAD PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x100 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3BD DUP2 PUSH2 0x1142 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD DUP1 DUP3 MSTORE PUSH2 0x3CC CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 CALLDATASIZE PUSH1 0x63 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3E9 DUP2 PUSH2 0x118C JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP2 MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0x40 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP4 PUSH2 0x44D SWAP2 PUSH1 0x80 PUSH2 0x479 SWAP7 ADD MSTORE PUSH2 0x182B JUMP JUMPDEST PUSH2 0x455 PUSH2 0x167A JUMP JUMPDEST PUSH2 0x45E CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH2 0x467 DUP3 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0x471 DUP2 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP3 PUSH2 0x1AB5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x494 PUSH2 0x172D JUMP JUMPDEST POP PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH2 0x4C2 PUSH2 0x4AE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x4F1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x4FA DUP2 PUSH2 0x156F JUMP JUMPDEST PUSH0 SWAP3 SWAP1 SWAP2 PUSH0 NOT DUP2 ADD SWAP2 CALLVALUE SWAP2 DUP6 JUMPDEST DUP2 DUP2 LT PUSH2 0x527 JUMPI PUSH2 0x4C2 PUSH2 0x51B DUP9 DUP9 PUSH2 0x2BF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1012 JUMP JUMPDEST PUSH2 0x536 DUP2 DUP4 DUP6 SWAP9 SWAP7 SWAP8 SWAP9 PUSH2 0x1120 JUMP JUMPDEST SWAP7 PUSH2 0x544 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x15DA JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP4 ISZERO DUP1 ISZERO PUSH2 0x6A1 JUMPI JUMPDEST PUSH2 0x692 JUMPI DUP10 SWAP7 PUSH0 SWAP9 SWAP6 SWAP9 SWAP6 PUSH1 0x40 DUP10 ADD SWAP6 PUSH1 0x60 DUP11 ADD SWAP11 PUSH1 0x80 DUP12 CALLDATALOAD SWAP12 ADD CALLDATALOAD SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP12 AND DUP1 SWAP12 EQ ISZERO SWAP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x624 JUMPI DUP16 SWAP1 PUSH2 0x5A0 DUP12 PUSH2 0x59A DUP4 PUSH1 0x5 SHL DUP14 ADD DUP14 PUSH2 0x1546 JUMP JUMPDEST SWAP4 PUSH2 0x16F8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x610 JUMPI DUP16 PUSH2 0x5B2 DUP15 SWAP2 PUSH2 0x155B JUMP JUMPDEST SWAP1 PUSH2 0x1B4 JUMPI DUP16 SWAP1 DUP16 SWAP1 PUSH2 0x5EF PUSH2 0x60A SWAP5 PUSH2 0x5DE PUSH1 0x1 SWAP9 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x5D5 DUP9 PUSH2 0x1142 JUMP JUMPDEST DUP8 MSTORE CALLDATASIZE SWAP1 PUSH2 0x1425 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE CALLDATASIZE SWAP1 PUSH1 0x60 DUP9 MUL ADD PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE DUP6 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1F26 JUMP JUMPDEST ADD PUSH2 0x57D JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP11 DUP14 SWAP15 POP DUP4 SWAP11 POP PUSH2 0x660 SWAP5 SWAP13 SWAP4 SWAP3 SWAP2 SWAP10 POP PUSH1 0x1 SWAP9 POP PUSH2 0x65A PUSH2 0x669 SWAP7 SWAP9 DUP9 SWAP16 PUSH2 0x652 SWAP1 PUSH1 0x20 SWAP11 EQ SWAP7 PUSH2 0x155B JUMP JUMPDEST SWAP4 CALLDATASIZE SWAP2 PUSH2 0x160F JUMP JUMPDEST SWAP1 PUSH2 0x263A JUMP JUMPDEST SWAP6 DUP7 MLOAD SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP5 ADD DUP1 MLOAD PUSH2 0x677 DUP10 DUP10 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x682 DUP9 DUP9 PUSH2 0x130C JUMP JUMPDEST POP MLOAD MLOAD ADD SWAP7 SWAP5 SWAP6 SWAP3 SWAP4 SWAP3 ADD PUSH2 0x507 JUMP JUMPDEST PUSH4 0x251F56A1 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH2 0x6AF PUSH1 0x40 DUP12 ADD DUP12 PUSH2 0x16F8 JUMP JUMPDEST SWAP1 POP DUP5 EQ ISZERO PUSH2 0x550 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x758 PUSH2 0x6F5 PUSH32 0x0 PUSH2 0x345B JUMP JUMPDEST PUSH2 0x4C2 PUSH2 0x721 PUSH32 0x0 PUSH2 0x34BA JUMP JUMPDEST PUSH2 0x766 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x733 PUSH1 0x20 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH0 DUP4 MSTORE PUSH0 CALLDATASIZE DUP2 CALLDATACOPY PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0xF PUSH1 0xF8 SHL DUP8 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0xFC4 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x104B JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD CALLER PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 DUP2 DUP2 GT ISZERO PUSH2 0x7EF JUMPI PUSH32 0x57B09AF877DF9068FD60A69D7B21F5576B8B38955812D6AE4AC52942F1E38FB7 SWAP2 PUSH1 0x40 SWAP2 CALLER PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 DUP4 PUSH0 KECCAK256 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH4 0x3AB3447F PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x4C2 PUSH1 0x20 PUSH2 0x8EC PUSH1 0x1 PUSH2 0x841 PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST DUP2 DUP5 PUSH2 0x86C PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST DUP2 DUP1 PUSH2 0x897 PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP10 DUP8 DUP12 SWAP9 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP11 ADD MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH2 0x216 DUP2 PUSH1 0x4 CALLDATALOAD PUSH2 0x2C61 JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x954 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP2 SWAP1 PUSH0 SWAP1 CALLVALUE JUMPDEST DUP2 DUP4 LT PUSH2 0x967 JUMPI STOP JUMPDEST PUSH2 0x972 DUP4 DUP4 DUP7 PUSH2 0x15B8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x1E NOT DUP3 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x1B4 JUMPI DUP2 ADD SWAP2 DUP3 CALLDATALOAD SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP3 DUP1 PUSH1 0x6 SHL CALLDATASIZE SUB DUP5 SGT PUSH2 0x1B4 JUMPI PUSH1 0x1 SWAP4 DUP3 PUSH2 0x9CC SWAP3 PUSH2 0x9D2 SWAP6 PUSH2 0x9C5 DUP13 DUP12 EQ SWAP5 CALLER SWAP4 CALLDATASIZE SWAP2 PUSH2 0x123E JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x1CE0 JUMP JUMPDEST SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x95E JUMP JUMPDEST PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x479 PUSH2 0x9F1 PUSH2 0x167A JUMP JUMPDEST PUSH2 0x9FA CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH2 0xA03 DUP3 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0xA0D DUP2 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP1 CALLER SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x1AB5 JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xA45 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH2 0xA4F DUP3 PUSH2 0x156F JUMP JUMPDEST SWAP2 PUSH0 SWAP2 CALLVALUE SWAP1 PUSH0 SWAP3 PUSH0 NOT DUP2 ADD SWAP1 JUMPDEST DUP1 DUP6 LT PUSH2 0xA70 JUMPI PUSH2 0x4C2 PUSH2 0x51B DUP8 DUP10 PUSH2 0x2BF9 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH2 0xA80 DUP7 DUP4 DUP7 PUSH2 0x15B8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 ADD SWAP2 PUSH2 0xA90 DUP4 DUP3 PUSH2 0x15DA JUMP JUMPDEST SWAP1 POP ISZERO PUSH2 0x692 JUMPI PUSH2 0xAD0 PUSH2 0xAC7 DUP10 DUP10 DUP9 DUP6 PUSH2 0xAC0 PUSH2 0xAB2 PUSH1 0x1 SWAP11 PUSH1 0x20 SWAP10 PUSH2 0x15DA JUMP JUMPDEST SWAP4 SWAP1 SWAP6 EQ SWAP5 CALLER SWAP4 CALLDATASIZE SWAP2 PUSH2 0x160F JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x263A JUMP JUMPDEST SWAP8 DUP9 MLOAD SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP7 ADD DUP1 MLOAD PUSH2 0xADE DUP10 DUP12 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0xAE9 DUP9 DUP11 PUSH2 0x130C JUMP JUMPDEST POP MLOAD MLOAD ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA5C JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x4 ADD SWAP1 PUSH1 0xE0 PUSH1 0x3 NOT DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0xB34 DUP2 PUSH2 0x1142 JUMP JUMPDEST DUP3 CALLDATALOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x24 DUP4 ADD SWAP4 DUP5 CALLDATALOAD SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 GT PUSH2 0x1B4 JUMPI PUSH2 0xBE0 PUSH2 0x1AB SWAP6 PUSH2 0xBC7 PUSH2 0x1A4 SWAP6 PUSH2 0xBB4 PUSH1 0x20 SWAP11 SWAP9 PUSH2 0xB76 DUP13 SWAP11 PUSH1 0x4 CALLDATASIZE SWAP2 DUP9 ADD ADD PUSH2 0x1425 JUMP JUMPDEST DUP11 DUP3 ADD MSTORE PUSH2 0xB87 CALLDATASIZE PUSH1 0x44 DUP8 ADD PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xBAA PUSH1 0xC4 PUSH1 0xA4 DUP8 ADD SWAP7 PUSH2 0xB9F DUP9 PUSH2 0xFFE JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE ADD PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1F26 JUMP JUMPDEST PUSH2 0x181 PUSH2 0xBBF PUSH2 0x14E1 JUMP JUMPDEST SWAP6 CALLDATASIZE SWAP3 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0xBD0 DUP5 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0xBDA DUP4 PUSH2 0x12FF JUMP JUMPDEST POP PUSH2 0x155B JUMP JUMPDEST SWAP1 CALLVALUE SWAP3 PUSH2 0x2067 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC09 PUSH2 0xFE8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH0 PUSH1 0x2 SLOAD PUSH2 0xC40 DUP2 PUSH2 0x1351 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0xCC6 JUMPI POP PUSH1 0x1 EQ PUSH2 0xC68 JUMPI JUMPDEST PUSH2 0x4C2 DUP4 PUSH2 0x8EC DUP2 DUP6 SUB DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x2 PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE SWAP4 SWAP3 POP SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0xCAC JUMPI POP SWAP1 SWAP2 POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x8EC PUSH2 0xC58 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP3 SWAP2 PUSH2 0xC94 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x5 SHL DUP5 ADD SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x8EC SWAP1 POP PUSH2 0xC58 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xD1A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xD3A JUMPI PUSH1 0x20 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH2 0xD53 DUP6 PUSH2 0xD4C PUSH1 0x1 SWAP5 DUP7 DUP9 PUSH2 0x1341 JUMP JUMPDEST CALLDATALOAD CALLER PUSH2 0x1EA2 JUMP JUMPDEST ADD PUSH2 0xD28 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xFEB2925A02BAE3DAE48D424A0437A2B6AC939AA9230DDC55A1A76F065D988076 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xDBE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP2 PUSH0 SWAP2 CALLVALUE JUMPDEST DUP2 DUP5 LT PUSH2 0xDD0 JUMPI STOP JUMPDEST PUSH2 0xDDB DUP5 DUP4 DUP6 PUSH2 0x1120 JUMP JUMPDEST PUSH1 0xA0 DUP2 CALLDATASIZE SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0xDF1 DUP2 PUSH2 0x1142 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP3 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0xE26 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x20 DUP2 CALLDATALOAD SWAP2 ADD PUSH2 0x123E JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP4 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0xE5A DUP3 PUSH2 0x11FF JUMP JUMPDEST SWAP2 PUSH2 0xE68 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 PUSH1 0x60 DUP2 DUP6 ADD SWAP3 MUL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF7A JUMPI POP POP POP PUSH1 0x40 DUP3 ADD DUP2 DUP2 MSTORE PUSH2 0xEB4 PUSH1 0x80 PUSH2 0xEA6 PUSH1 0x60 DUP9 ADD PUSH2 0xFFE JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP7 ADD SWAP8 DUP9 MSTORE ADD PUSH2 0x12EB JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP5 ADD SWAP5 DUP6 MSTORE MLOAD SWAP4 DUP5 MLOAD SWAP3 DUP4 ISZERO SWAP1 DUP2 ISZERO PUSH2 0xF6E JUMPI JUMPDEST POP PUSH2 0x692 JUMPI PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xF0B JUMPI POP POP SWAP2 MLOAD SWAP4 MLOAD PUSH1 0x1 SWAP6 PUSH2 0xF03 SWAP6 SWAP1 SWAP5 PUSH2 0x9CC SWAP5 POP DUP11 DUP13 EQ SWAP4 POP DUP6 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x1CE0 JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0xF68 DUP7 MLOAD PUSH2 0xF1D DUP4 DUP11 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0xF29 DUP5 DUP9 MLOAD PUSH2 0x130C JUMP JUMPDEST MLOAD DUP6 DUP1 PUSH1 0xA0 SHL SUB DUP13 MLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 MLOAD AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0xF4D DUP7 PUSH2 0x1142 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x182B JUMP JUMPDEST ADD PUSH2 0xED2 JUMP JUMPDEST SWAP1 POP MLOAD DUP4 EQ ISZERO DUP13 PUSH2 0xECB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x60 SWAP2 PUSH2 0xF89 CALLDATASIZE DUP6 PUSH2 0x12AD JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xE84 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x1B4 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1035 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1028 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1068 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x105B JUMP JUMPDEST SWAP1 PUSH2 0x140 PUSH2 0x120 PUSH2 0x111D SWAP4 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP3 ADD MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0xC0 DUP3 ADD MLOAD AND PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0xE0 DUP3 ADD MLOAD AND PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE ADD MLOAD SWAP2 DUP2 PUSH2 0x120 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x9E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x23 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x122F DUP3 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x124A DUP3 PUSH2 0x11FF JUMP JUMPDEST SWAP4 PUSH2 0x1258 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP6 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x6 SHL DUP3 ADD SWAP2 DUP2 DUP4 GT PUSH2 0x1B4 JUMPI SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x127C JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP5 DUP4 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 SWAP2 DUP3 MLOAD PUSH2 0x1296 DUP2 PUSH2 0x1171 JUMP JUMPDEST DUP7 CALLDATALOAD DUP2 MSTORE DUP3 DUP8 ADD CALLDATALOAD DUP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x126F JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x12C5 DUP2 PUSH2 0x118C JUMP JUMPDEST DUP1 SWAP3 DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 SWAP2 DUP3 SWAP2 DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x610 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x132D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x137F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x136B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1360 JUMP JUMPDEST PUSH0 SWAP3 SWAP2 DUP2 SLOAD SWAP2 PUSH2 0x1398 DUP4 PUSH2 0x1351 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x13ED JUMPI POP PUSH1 0x1 EQ PUSH2 0x13B4 JUMPI POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 SWAP4 SWAP5 POP SWAP2 SWAP3 JUMPDEST DUP4 DUP4 LT PUSH2 0x13D3 JUMPI POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP5 SWAP4 SWAP5 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP2 SWAP1 PUSH2 0x13C2 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xC0 DUP4 DUP3 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x143E DUP3 PUSH2 0x11A7 JUMP JUMPDEST DUP2 SWAP4 PUSH2 0x1449 DUP2 PUSH2 0xFFE JUMP JUMPDEST DUP4 MSTORE PUSH2 0x1457 PUSH1 0x20 DUP3 ADD PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP2 ADD SWAP1 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP2 CALLDATALOAD SWAP3 PUSH2 0x14A6 DUP5 PUSH2 0x140A JUMP JUMPDEST SWAP1 PUSH2 0x14B4 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x20 DUP6 DUP6 ADD ADD GT PUSH2 0x1B4 JUMPI PUSH0 PUSH1 0x20 DUP6 PUSH1 0xA0 SWAP7 DUP3 DUP9 SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x14F2 DUP4 DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE SWAP2 PUSH1 0x1F NOT ADD DUP3 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x150A JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x1519 DUP2 PUSH2 0x11A7 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x14FE JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0xBE NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1579 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x1586 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x1597 PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x15A7 JUMPI POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP6 ADD ADD MSTORE ADD PUSH2 0x159B JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x3E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x1B4 JUMPI JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x161B DUP2 PUSH2 0x11FF JUMP JUMPDEST SWAP4 PUSH2 0x1629 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP6 DUP4 DUP2 MSTORE ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x1B4 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x164F JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x166F DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x1425 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x168B DUP4 DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE SWAP2 PUSH1 0x1F NOT ADD DUP3 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x16A3 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x16B2 DUP2 PUSH2 0x1171 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x1697 JUMP JUMPDEST SWAP1 PUSH2 0x16D0 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x16DD PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x16EE PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP2 PUSH1 0x60 DUP3 MUL CALLDATASIZE SUB DUP4 SGT PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x173A DUP3 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x120 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH0 PUSH1 0xC0 DUP3 ADD MSTORE PUSH0 PUSH1 0xE0 DUP3 ADD MSTORE PUSH0 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x6 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x1789 DUP2 PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0x1819 DUP2 SWAP6 DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x2 DUP3 ADD SLOAD DUP2 DUP2 AND PUSH1 0x40 DUP7 ADD MSTORE DUP2 DUP2 PUSH1 0x40 SHR AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 SHR AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x4 DUP3 ADD SLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0xA0 SHR AND ISZERO ISZERO PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1812 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP4 ADD PUSH2 0x1389 JUMP JUMPDEST SUB DUP5 PUSH2 0x11DE JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH0 NOT DUP2 EQ PUSH2 0x132D JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x1973 JUMPI JUMPDEST POP PUSH2 0x1964 JUMPI DUP2 PUSH2 0x18FD PUSH1 0x20 PUSH2 0x194E SWAP5 ADD MLOAD SWAP2 PUSH1 0x40 DUP2 ADD MLOAD SWAP4 PUSH1 0x60 DUP3 ADD SWAP4 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP3 MLOAD SWAP2 PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD DUP5 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SWAP3 DUP4 SLOAD SWAP4 PUSH2 0x1896 DUP6 PUSH2 0x181D JUMP JUMPDEST SWAP1 SSTORE MLOAD AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH1 0x20 DUP7 ADD SWAP7 PUSH32 0xB5D556F07587EC0F08CF386545CC4362C702A001650C2058002615EE5C9D1E75 DUP9 MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 MSTORE PUSH2 0x18F5 PUSH2 0x100 DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x2F5C JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x20 DUP4 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP6 MLOAD DUP2 MLOAD SWAP4 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xF8 SWAP4 SWAP1 SWAP4 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x41 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1949 PUSH1 0x61 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH2 0x2F82 JUMP JUMPDEST ISZERO PUSH2 0x1955 JUMPI JUMP JUMPDEST PUSH4 0x8BAA579F PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x1AB7DA6B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND GT PUSH0 PUSH2 0x1844 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x1B4 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI ADD SWAP1 PUSH1 0x80 DUP3 DUP3 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x80 DUP4 ADD DUP4 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1A01 PUSH1 0x40 DUP3 ADD PUSH2 0x1986 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1A32 DUP3 PUSH2 0x140A JUMP JUMPDEST SWAP3 PUSH2 0x1A40 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x1B4 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A70 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x1A7D PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x1A8E PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1A9E JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x1AA9 PUSH2 0x172D JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x1A92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP3 PUSH2 0x1CB1 JUMPI JUMPDEST POP DUP2 MLOAD ISZERO PUSH2 0x1C93 JUMPI DUP1 MLOAD PUSH2 0x1B1D DUP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP4 PUSH2 0x1B27 DUP3 PUSH2 0x16C6 JUMP JUMPDEST SWAP6 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1B50 JUMPI POP POP POP POP POP POP SWAP2 PUSH2 0x111D SWAP4 SWAP2 PUSH1 0x1 SWAP4 PUSH2 0x30CA JUMP JUMPDEST PUSH2 0x1B5A DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP1 DUP2 MLOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD ISZERO PUSH2 0x1CA2 JUMPI DUP6 PUSH1 0x1 DUP5 ADD SLOAD SUB PUSH2 0x1C93 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 SWAP1 DUP2 AND DUP3 SWAP1 SUB PUSH2 0x1C84 JUMPI PUSH1 0xA0 SHR PUSH1 0xFF AND ISZERO PUSH2 0x1C75 JUMPI PUSH1 0x2 DUP5 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 SLOAD PUSH1 0x80 SHR AND PUSH2 0x1C66 JUMPI DUP3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x80 DUP12 SWAP1 SHL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP4 DUP8 SWAP3 SWAP1 DUP13 SWAP1 PUSH2 0x1C01 SWAP1 DUP7 SWAP1 PUSH2 0x1BFB SWAP1 PUSH2 0x1777 JUMP JUMPDEST PUSH2 0x1777 JUMP JUMPDEST SWAP3 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x1C0C DUP5 DUP14 PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x1C1C DUP6 DUP16 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH32 0xF930A6E2523C9CC298691873087A740550B8FC85A0680830414C148ED927F615 PUSH1 0x20 DUP14 PUSH1 0xC0 PUSH2 0x1C53 DUP9 DUP11 DUP1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x130C JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 ADD PUSH2 0x1B35 JUMP JUMPDEST PUSH4 0x905E7107 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x157BD4C3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4CA88867 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x5F9BD907 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xC5723B51 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1CCE SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1993 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x1E88 JUMPI JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x1C93 JUMPI DUP7 MLOAD PUSH2 0x1D4C DUP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP3 PUSH2 0x1D56 DUP3 PUSH2 0x16C6 JUMP JUMPDEST SWAP5 PUSH0 SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP11 JUMPDEST DUP5 DUP2 LT PUSH2 0x1D7C JUMPI POP POP POP POP POP PUSH2 0x111D SWAP6 SWAP7 POP PUSH2 0x30CA JUMP JUMPDEST PUSH2 0x1D86 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP1 DUP2 MLOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD ISZERO PUSH2 0x1CA2 JUMPI DUP6 PUSH1 0x1 DUP5 ADD SLOAD SUB PUSH2 0x1C93 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 SWAP1 DUP2 AND DUP3 SWAP1 SUB PUSH2 0x1C84 JUMPI PUSH1 0xA0 SHR PUSH1 0xFF AND ISZERO PUSH2 0x1C75 JUMPI PUSH1 0x2 DUP5 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 SLOAD PUSH1 0x80 SHR AND PUSH2 0x1C66 JUMPI DUP16 PUSH1 0x1 SWAP6 PUSH2 0x1BF6 PUSH2 0x1E19 SWAP3 DUP12 SWAP7 SWAP1 DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1E23 DUP6 DUP14 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x1E2E DUP5 DUP13 PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x1E3E DUP6 DUP15 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH32 0xF930A6E2523C9CC298691873087A740550B8FC85A0680830414C148ED927F615 PUSH1 0x20 DUP13 PUSH1 0xC0 PUSH2 0x1E75 DUP9 DUP11 DUP1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x130C JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 ADD PUSH2 0x1D65 JUMP JUMPDEST PUSH2 0x1E9C SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST PUSH0 PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH2 0x1F17 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP4 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 AND DUP4 NOT DUP3 SLOAD AND OR SWAP1 SSTORE AND SWAP2 PUSH32 0x92A1F7A41A7C585A8B09E25B195E225B1D43248DACA46B0FAF9E0792777A2229 PUSH0 DUP1 LOG4 JUMP JUMPDEST PUSH4 0xEC9D6EEB PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x203B JUMPI JUMPDEST POP PUSH2 0x1964 JUMPI DUP2 PUSH2 0x18FD PUSH1 0x20 PUSH2 0x194E SWAP5 ADD MLOAD SWAP2 PUSH1 0x40 DUP2 ADD MLOAD SWAP4 PUSH1 0x60 DUP3 ADD SWAP4 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP3 MLOAD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND SWAP1 PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP3 ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 ADD MLOAD SWAP4 DUP9 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SWAP7 DUP8 SLOAD SWAP8 PUSH2 0x1FC3 DUP10 PUSH2 0x181D JUMP JUMPDEST SWAP1 SSTORE MLOAD AND SWAP7 PUSH1 0x40 MLOAD SWAP9 PUSH1 0x20 DUP11 ADD SWAP11 PUSH32 0xFEB2925A02BAE3DAE48D424A0437A2B6AC939AA9230DDC55A1A76F065D988076 DUP13 MSTORE PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x160 DUP2 MSTORE PUSH2 0x18F5 PUSH2 0x180 DUP3 PUSH2 0x11DE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND GT PUSH0 PUSH2 0x1F3F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x205B DUP3 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 DUP4 PUSH0 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0xE0 MSTORE PUSH2 0x2074 PUSH2 0x204E JUMP JUMPDEST POP DUP1 MLOAD SWAP1 PUSH2 0x2080 PUSH2 0x204E JUMP JUMPDEST PUSH2 0x100 MSTORE PUSH2 0x208D DUP3 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL DUP1 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 PUSH1 0x80 MSTORE PUSH2 0x261E JUMPI JUMPDEST POP PUSH1 0x80 MLOAD MLOAD ISZERO PUSH2 0x1C93 JUMPI SWAP1 SWAP2 PUSH2 0x20FE DUP4 PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH2 0x210A DUP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x213E JUMPI POP POP POP POP POP PUSH2 0x2132 PUSH1 0x1 PUSH1 0xE0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x80 MLOAD PUSH2 0x32B4 JUMP JUMPDEST PUSH2 0x100 MLOAD MSTORE PUSH2 0x100 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x214E DUP4 DUP3 SWAP8 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x260A JUMPI JUMPDEST POP PUSH2 0x25FB JUMPI PUSH1 0x40 PUSH1 0x80 MLOAD ADD MLOAD ISZERO DUP1 PUSH2 0x25EE JUMPI JUMPDEST PUSH2 0x1C75 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP6 ADD MLOAD SWAP8 MLOAD AND SWAP7 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND PUSH1 0x40 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 PUSH1 0x80 DUP8 ADD MLOAD SWAP3 PUSH1 0x40 MLOAD SWAP11 PUSH2 0x21B7 DUP13 PUSH2 0x11C2 JUMP JUMPDEST PUSH0 DUP13 MSTORE DUP10 PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH1 0x40 DUP14 ADD MSTORE PUSH1 0x60 DUP13 ADD MSTORE PUSH0 PUSH1 0x80 DUP13 ADD MSTORE PUSH1 0xA0 DUP12 ADD MSTORE PUSH1 0xC0 DUP11 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0xE0 DUP11 ADD MSTORE PUSH2 0x100 DUP10 ADD MSTORE PUSH2 0x120 DUP9 ADD MSTORE PUSH0 JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD DUP9 PUSH2 0x22D0 PUSH1 0x4 PUSH1 0x99 PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x20 PUSH1 0xE0 DUP7 ADD MLOAD SWAP6 PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 PUSH2 0x120 PUSH1 0xA0 DUP5 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP8 DUP8 DUP10 ADD SWAP14 DUP15 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x54 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x68 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x70 DUP7 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x78 DUP6 ADD MSTORE PUSH1 0x79 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP5 ADD MCOPY DUP2 ADD PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP9 PUSH1 0xE0 SHL AND DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1B NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH2 0x22F4 JUMPI POP PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND PUSH2 0x2200 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 SWAP1 SWAP5 SWAP6 SWAP2 SWAP8 SWAP4 SWAP3 SWAP4 DUP1 DUP3 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP1 MLOAD DUP4 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE PUSH2 0x23A2 PUSH1 0x2 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT DUP3 SLOAD AND OR DUP2 SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL DUP3 SLOAD SWAP2 PUSH1 0x40 SHL AND SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP5 ADD MLOAD AND DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 ADD MLOAD PUSH1 0x3 DUP6 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH2 0x100 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ISZERO ISZERO SWAP1 SWAP3 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE PUSH2 0x120 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI DUP10 SWAP5 PUSH2 0x242C PUSH1 0x6 DUP5 ADD SLOAD PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2596 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x2528 JUMPI PUSH1 0x6 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x251D JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 PUSH2 0x24F9 JUMPI JUMPDEST POP SWAP4 PUSH1 0x1 SWAP5 PUSH2 0x2481 DUP6 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x248E DUP5 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x24A0 DUP6 PUSH1 0xC0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP2 PUSH2 0x24B3 DUP6 PUSH1 0x20 PUSH2 0x100 MLOAD ADD MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP5 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x8BF46BF4CFD674FA735A3D63EC1C9AD4153F033C290341F3A588B75685141B35 PUSH1 0x20 DUP7 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 LOG4 ADD SWAP2 SWAP3 SWAP1 PUSH2 0x2110 JUMP JUMPDEST PUSH2 0x2510 SWAP2 SWAP4 POP PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CA2 JUMPI DUP7 SWAP2 PUSH0 PUSH2 0x2470 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2450 JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP5 ADD PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH2 0x257B JUMPI POP SWAP2 DUP4 SWAP2 PUSH1 0x1 SWAP4 PUSH1 0x6 SWAP6 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x2563 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP2 ADD SSTORE PUSH2 0x2465 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2555 JUMP JUMPDEST DUP2 DUP4 ADD MLOAD DUP5 SSTORE DUP14 SWAP9 POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2535 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 POP PUSH1 0x6 DUP5 ADD PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x25E7 JUMPI JUMPDEST SWAP1 DUP13 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x25D9 JUMPI POP POP PUSH2 0x2435 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP14 SWAP9 POP PUSH1 0x1 ADD PUSH2 0x25C3 JUMP JUMPDEST POP DUP1 PUSH2 0x25B9 JUMP JUMPDEST POP PUSH1 0x40 DUP5 ADD MLOAD ISZERO ISZERO PUSH2 0x217D JUMP JUMPDEST PUSH4 0x8E8B937 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND LT ISZERO PUSH0 PUSH2 0x216A JUMP JUMPDEST PUSH2 0x2631 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH0 PUSH2 0x20E9 JUMP JUMPDEST SWAP2 SWAP3 SWAP4 SWAP1 SWAP4 PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x264D PUSH2 0x204E JUMP JUMPDEST POP DUP3 MLOAD SWAP1 PUSH2 0x2659 PUSH2 0x204E JUMP JUMPDEST PUSH2 0x100 MSTORE PUSH2 0x2666 DUP3 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 DUP6 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP6 PUSH2 0x2BDD JUMPI JUMPDEST POP DUP5 MLOAD ISZERO PUSH2 0x1C93 JUMPI SWAP1 PUSH2 0x26D4 DUP4 PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH2 0x26E0 DUP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x270B JUMPI POP POP POP POP POP PUSH2 0x2132 SWAP1 PUSH1 0xE0 MLOAD SWAP1 PUSH1 0xC0 MLOAD SWAP1 PUSH1 0xA0 MLOAD SWAP1 PUSH1 0x80 MLOAD SWAP1 PUSH2 0x32B4 JUMP JUMPDEST SWAP1 SWAP3 SWAP5 SWAP2 SWAP4 SWAP6 PUSH2 0x271B DUP6 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x2BC9 JUMPI JUMPDEST POP PUSH2 0x25FB JUMPI PUSH1 0x40 DUP3 ADD MLOAD ISZERO DUP1 PUSH2 0x2BBC JUMPI JUMPDEST PUSH2 0x1C75 JUMPI PUSH1 0x60 DUP6 ADD MLOAD SWAP8 MLOAD DUP6 MLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD SWAP2 MLOAD SWAP12 SWAP2 SWAP4 SWAP1 ISZERO ISZERO SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP11 PUSH1 0x20 DUP15 PUSH2 0x278A DUP2 PUSH2 0x11C2 JUMP JUMPDEST PUSH0 DUP2 MSTORE ADD MSTORE DUP13 PUSH1 0x40 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 ADD MSTORE PUSH1 0x60 DUP14 ADD MSTORE PUSH0 PUSH1 0x80 DUP14 ADD MSTORE PUSH1 0xA0 DUP13 ADD MSTORE PUSH1 0xC0 DUP12 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0xE0 DUP12 ADD MSTORE PUSH2 0x100 DUP11 ADD MSTORE PUSH2 0x120 DUP10 ADD MSTORE PUSH0 JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD DUP10 PUSH2 0x28A0 PUSH1 0x4 PUSH1 0x99 PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x20 PUSH1 0xE0 DUP7 ADD MLOAD SWAP6 PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 PUSH2 0x120 PUSH1 0xA0 DUP5 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP8 DUP8 DUP10 ADD SWAP14 DUP15 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x54 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x68 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x70 DUP7 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x78 DUP6 ADD MSTORE PUSH1 0x79 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP5 ADD MCOPY DUP2 ADD PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP9 PUSH1 0xE0 SHL AND DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1B NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH2 0x28C4 JUMPI POP PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND PUSH2 0x27D0 JUMP JUMPDEST SWAP1 POP SWAP9 SWAP7 SWAP2 SWAP8 SWAP1 SWAP6 SWAP5 SWAP3 SWAP9 DUP1 DUP3 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP1 MLOAD DUP4 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE PUSH2 0x2971 PUSH1 0x2 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT DUP3 SLOAD AND OR DUP2 SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL DUP3 SLOAD SWAP2 PUSH1 0x40 SHL AND SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP5 ADD MLOAD AND DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 ADD MLOAD PUSH1 0x3 DUP6 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH2 0x100 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ISZERO ISZERO SWAP1 SWAP3 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE PUSH2 0x120 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI DUP9 SWAP5 PUSH2 0x29FB PUSH1 0x6 DUP5 ADD SLOAD PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2B64 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x2AF6 JUMPI PUSH1 0x6 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x2AEB JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 PUSH2 0x2AC7 JUMPI JUMPDEST POP SWAP4 PUSH1 0x1 SWAP5 PUSH2 0x2A50 DUP6 PUSH1 0x80 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x2A5D DUP5 PUSH1 0x80 MLOAD PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x2A6F DUP6 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP2 PUSH2 0x2A82 DUP6 PUSH1 0x20 PUSH2 0x100 MLOAD ADD MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP5 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x8BF46BF4CFD674FA735A3D63EC1C9AD4153F033C290341F3A588B75685141B35 PUSH1 0x20 DUP7 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 LOG4 ADD SWAP2 SWAP1 PUSH2 0x26E6 JUMP JUMPDEST PUSH2 0x2ADE SWAP2 SWAP4 POP PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CA2 JUMPI DUP6 SWAP2 PUSH0 PUSH2 0x2A3F JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2A1F JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP5 ADD PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH2 0x2B49 JUMPI POP SWAP2 DUP4 SWAP2 PUSH1 0x1 SWAP4 PUSH1 0x6 SWAP6 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x2B31 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP2 ADD SSTORE PUSH2 0x2A34 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2B23 JUMP JUMPDEST DUP2 DUP4 ADD MLOAD DUP5 SSTORE DUP13 SWAP9 POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2B03 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 POP PUSH1 0x6 DUP5 ADD PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x2BB5 JUMPI JUMPDEST SWAP1 DUP12 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x2BA7 JUMPI POP POP PUSH2 0x2A04 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP13 SWAP9 POP PUSH1 0x1 ADD PUSH2 0x2B91 JUMP JUMPDEST POP DUP1 PUSH2 0x2B87 JUMP JUMPDEST POP PUSH1 0x40 DUP6 ADD MLOAD ISZERO ISZERO PUSH2 0x2748 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND LT ISZERO PUSH0 PUSH2 0x2737 JUMP JUMPDEST PUSH2 0x2BF2 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST SWAP4 PUSH0 PUSH2 0x26C2 JUMP JUMPDEST SWAP1 PUSH2 0x2C03 SWAP1 PUSH2 0x16C6 JUMP JUMPDEST SWAP1 PUSH0 DUP2 MLOAD SWAP2 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x2C18 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2C22 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 MLOAD PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x2C3A JUMPI POP POP POP PUSH1 0x1 ADD PUSH2 0x2C0A JUMP JUMPDEST SWAP1 SWAP2 SWAP5 PUSH1 0x1 DUP1 SWAP2 PUSH2 0x2C4B DUP9 DUP6 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x2C56 DUP3 DUP13 PUSH2 0x130C JUMP JUMPDEST MSTORE ADD SWAP6 ADD SWAP2 SWAP1 PUSH2 0x2C28 JUMP JUMPDEST SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH2 0x2CC4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP3 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 AND DUP4 NOT DUP3 SLOAD AND OR SWAP1 SSTORE AND SWAP1 PUSH32 0x5AAFCEEB1C7AD58E4A84898BDEE37C02C0FC46E7D24E6B60E8209449F183459F PUSH0 DUP1 LOG3 JUMP JUMPDEST PUSH4 0x17133CA3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x2E1D JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x2E02 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x2DEE JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x2DDD JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x2DCE JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x2DC0 JUMPI JUMPDEST LT ISZERO PUSH2 0x2DB5 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x2D5A DUP6 PUSH2 0x140A JUMP JUMPDEST SWAP5 PUSH2 0x2D68 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x11DE JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x2D77 PUSH1 0x1F NOT SWAP2 PUSH2 0x140A JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x2DB0 JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x2D82 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2D48 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D41 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D37 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D2C JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D1F JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x2CF5 JUMP JUMPDEST ADDRESS PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2F33 JUMPI JUMPDEST ISZERO PUSH2 0x2E9B JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x2F2D PUSH1 0xC0 DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x2E72 JUMP JUMPDEST PUSH1 0x42 SWAP1 PUSH2 0x2F67 PUSH2 0x2E40 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1901 PUSH1 0xF0 SHL DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 EXTCODESIZE PUSH2 0x2FD1 JUMPI SWAP1 PUSH2 0x2F94 SWAP2 PUSH2 0x3520 JUMP JUMPDEST POP PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x2FBD JUMPI ISZERO SWAP2 DUP3 PUSH2 0x2FAA JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH0 SWAP3 PUSH2 0x3007 PUSH2 0x3015 DUP6 SWAP5 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD SWAP6 PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP8 MSTORE PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP2 GAS STATICCALL PUSH2 0x3021 PUSH2 0x34F1 JUMP JUMPDEST DUP2 PUSH2 0x304F JUMPI JUMPDEST DUP2 PUSH2 0x3030 JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 MLOAD LT ISZERO SWAP1 PUSH2 0x3027 JUMP JUMPDEST SWAP3 SWAP2 PUSH1 0x40 DUP5 ADD SWAP4 PUSH1 0x40 DUP2 MSTORE DUP3 MLOAD DUP1 SWAP6 MSTORE PUSH1 0x60 DUP2 ADD SWAP5 PUSH1 0x20 PUSH1 0x60 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x309F JUMPI POP POP POP PUSH2 0x111D SWAP4 SWAP5 POP PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x104B JUMP JUMPDEST SWAP1 SWAP2 SWAP5 PUSH1 0x20 DUP1 PUSH2 0x30BB PUSH1 0x1 SWAP4 PUSH1 0x5F NOT DUP9 DUP3 SUB ADD DUP13 MSTORE DUP10 MLOAD PUSH2 0x107E JUMP JUMPDEST SWAP8 ADD SWAP9 ADD SWAP2 ADD SWAP7 SWAP2 SWAP1 SWAP7 PUSH2 0x3082 JUMP JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP5 PUSH1 0x1 DUP7 EQ PUSH2 0x328E JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x324F JUMPI PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP7 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3215 JUMPI JUMPDEST POP SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x31B9 JUMPI POP POP POP SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x3147 SWAP4 DUP8 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH4 0x88E5B2D9 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x305D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x317F JUMPI JUMPDEST POP ISZERO PUSH2 0x3170 JUMPI PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x111D SWAP1 PUSH2 0x372E JUMP JUMPDEST PUSH4 0xBF2F3A8B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x31B1 JUMPI JUMPDEST DUP2 PUSH2 0x319A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x31AB SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3159 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x318D JUMP JUMPDEST SWAP1 SWAP2 SWAP8 SWAP7 PUSH2 0x31C7 DUP10 DUP8 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x320A JUMPI DUP3 ISZERO PUSH2 0x31FB JUMPI DUP2 DUP2 GT PUSH2 0x31EC JUMPI DUP1 PUSH1 0x1 SWAP3 SUB SWAP9 ADD SWAP9 JUMPDEST ADD SWAP2 SWAP1 PUSH2 0x3118 JUMP JUMPDEST PUSH4 0x44044A5 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x1574F9F3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP SWAP7 SWAP8 PUSH1 0x1 SWAP1 PUSH2 0x31E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3247 JUMPI JUMPDEST DUP2 PUSH2 0x3230 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3241 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3113 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3223 JUMP JUMPDEST POP POP PUSH0 SWAP4 SWAP2 SWAP3 SWAP4 JUMPDEST DUP3 DUP2 LT PUSH2 0x3277 JUMPI POP POP POP PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3273 SWAP1 PUSH2 0x372E JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3281 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x31FB JUMPI PUSH1 0x1 ADD PUSH2 0x3257 JUMP JUMPDEST SWAP1 PUSH2 0x111D SWAP6 POP SWAP2 PUSH2 0x32AD PUSH2 0x32A6 PUSH1 0x1 SWAP5 SWAP7 SWAP6 SWAP7 PUSH2 0x12FF JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x12FF JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x355A JUMP JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP5 PUSH1 0x1 DUP7 EQ PUSH2 0x3444 JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x3412 JUMPI PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP7 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x33D8 JUMPI JUMPDEST POP SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x339A JUMPI POP POP POP SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x3331 SWAP4 DUP8 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH4 0x48ED85BF PUSH1 0xE1 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x305D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3360 JUMPI JUMPDEST POP ISZERO PUSH2 0x3351 JUMPI PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH4 0xE8BEE839 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3392 JUMPI JUMPDEST DUP2 PUSH2 0x337B PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x338C SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3343 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x336E JUMP JUMPDEST SWAP1 SWAP2 SWAP8 SWAP7 PUSH2 0x33A8 DUP10 DUP8 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x33CD JUMPI DUP3 ISZERO PUSH2 0x31FB JUMPI DUP2 DUP2 GT PUSH2 0x31EC JUMPI DUP1 PUSH1 0x1 SWAP3 SUB SWAP9 ADD SWAP9 JUMPDEST ADD SWAP2 SWAP1 PUSH2 0x3302 JUMP JUMPDEST POP SWAP7 SWAP8 PUSH1 0x1 SWAP1 PUSH2 0x33C5 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x340A JUMPI JUMPDEST DUP2 PUSH2 0x33F3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3404 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x32FD JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x33E6 JUMP JUMPDEST POP POP PUSH0 SWAP4 SWAP2 SWAP3 SWAP4 JUMPDEST DUP3 DUP2 LT PUSH2 0x342D JUMPI POP POP POP PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3437 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x31FB JUMPI PUSH1 0x1 ADD PUSH2 0x341A JUMP JUMPDEST SWAP1 PUSH2 0x111D SWAP6 POP SWAP2 PUSH2 0x32AD PUSH2 0x32A6 PUSH0 SWAP5 SWAP7 SWAP6 SWAP7 PUSH2 0x12FF JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x34A1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x3492 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x347F PUSH1 0x40 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 CALLDATASIZE DUP4 CALLDATACOPY DUP4 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x2CD44AC3 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D DUP2 PUSH2 0x34B3 DUP2 PUSH0 PUSH2 0x1389 JUMP JUMPDEST SUB DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x34DE JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x3492 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x347F PUSH1 0x40 DUP5 PUSH2 0x11DE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D DUP2 PUSH2 0x34B3 DUP2 PUSH1 0x1 PUSH2 0x1389 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x351B JUMPI RETURNDATASIZE SWAP1 PUSH2 0x3502 DUP3 PUSH2 0x140A JUMP JUMPDEST SWAP2 PUSH2 0x3510 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST DUP2 MLOAD SWAP2 SWAP1 PUSH1 0x41 DUP4 SUB PUSH2 0x3550 JUMPI PUSH2 0x3549 SWAP3 POP PUSH1 0x20 DUP3 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP5 ADD MLOAD SWAP4 ADD MLOAD PUSH0 BYTE SWAP1 PUSH2 0x378A JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP2 PUSH1 0x2 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP2 SWAP5 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x371C JUMPI SWAP1 DUP6 SWAP3 SWAP2 DUP4 PUSH2 0x369F JUMPI JUMPDEST PUSH1 0x20 SWAP3 SWAP2 SWAP1 ISZERO PUSH2 0x3618 JUMPI PUSH2 0x35AE SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH4 0xE49617E1 PUSH1 0xE0 SHL DUP4 MSTORE DUP8 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x35DE JUMPI JUMPDEST POP ISZERO PUSH2 0x35CF JUMPI JUMPDEST PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH4 0xCCF3BB27 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3610 JUMPI JUMPDEST DUP2 PUSH2 0x35F9 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x360A SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x35C0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x35EC JUMP JUMPDEST PUSH2 0x363F SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH4 0xE60C3505 PUSH1 0xE0 SHL DUP4 MSTORE DUP8 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3665 JUMPI JUMPDEST POP PUSH2 0x35C7 JUMPI PUSH4 0xBD8BA84D PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3697 JUMPI JUMPDEST DUP2 PUSH2 0x3680 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3691 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3651 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3673 JUMP JUMPDEST SWAP5 SWAP2 SWAP1 SWAP3 POP PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x36E2 JUMPI JUMPDEST POP ISZERO PUSH2 0x31FB JUMPI DUP2 DUP7 GT PUSH2 0x31EC JUMPI SWAP1 DUP6 SWAP1 SUB SWAP4 DUP6 SWAP3 SWAP1 PUSH2 0x357D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3714 JUMPI JUMPDEST DUP2 PUSH2 0x36FD PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x370E SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x36C8 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x36F0 JUMP JUMPDEST POP POP POP SWAP1 SWAP2 PUSH2 0x31FB JUMPI PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x3736 JUMPI POP JUMP JUMPDEST DUP1 SELFBALANCE LT PUSH2 0x3774 JUMPI PUSH0 DUP1 DUP1 DUP1 SWAP4 CALLER GAS CALL PUSH2 0x374D PUSH2 0x34F1 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x3756 JUMPI POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3765 JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH4 0xD6BDA275 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SELFBALANCE PUSH4 0xCF479181 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x3801 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x1CD5 JUMPI PUSH0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x37F7 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL DUP15 MLOAD PUSH21 0xF05D059AC048AF06E78A8AC517B8C255C9A61DB83 SWAP13 0xE6 0x2D 0xAA 0xA6 0xAB 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "976:28530:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;3044:58;2963:31;;3044:66;2963:31;976:28530;2963:31;;:::i;:::-;976:28530;3014:12;;976:28530;3014:12;;;;:::i;:::-;976:28530;:::i;:::-;3004:22;;;:::i;:::-;;;;;:::i;:::-;;3086:9;3074:10;;976:28530;;3044:58;:::i;:::-;:63;;:66;:::i;:::-;976:28530;;;;;;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;2773:15;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;2475:20:7;;:::i;:::-;976:28530:1;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;:::i;:::-;6500:15:7;-1:-1:-1;;;;;6500:15:7;976:28530:1;14628:13;976:28530;14643:10;;;;;;976:28530;;;;;;;;14655:19;14701:7;14710:4;14701:7;;1489:1:0;14701:7:1;;;;:::i;:::-;976:28530;14710:4;:::i;:::-;976:28530;14628:13;;976:28530;;;;;;-1:-1:-1;;976:28530:1;;;;;;;;-1:-1:-1;976:28530:1;15013:3;976:28530;;;-1:-1:-1;976:28530:1;;15013:25;;14928:117;;976:28530;;;;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;;;15160:11;976:28530;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;-1:-1:-1;;;;;6500:15:7;976:28530:1;14064:4;976:28530;;;14046:10;14064:4;:::i;976:28530::-;;;;;;-1:-1:-1;;976:28530:1;;;;;;;1451:66:7;976:28530:1;;;;;;;;;-1:-1:-1;;976:28530:1;;;;-1:-1:-1;;;;;976:28530:1;;:::i;:::-;;;;15321:20;976:28530;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;976:28530:1;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;9575:31;976:28530;;9737:81;976:28530;;;9575:31;:::i;:::-;9655:30;;:::i;:::-;976:28530;;;:::i;:::-;9695:31;;;:::i;:::-;;;;;:::i;:::-;;9802:9;9737:81;;:::i;:::-;976:28530;;;;;;;-1:-1:-1;;976:28530:1;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;976:28530:1;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;:::i;:::-;6363:23;;;:::i;:::-;976:28530;;6396:25;;-1:-1:-1;;976:28530:1;;;6860:9;;976:28530;6900:10;;;;;;976:28530;9106:36;;;;:::i;:::-;976:28530;;;;;;;:::i;6912:19::-;7393:25;;;;;;;;;:::i;:::-;7473:26;;976:28530;7473:26;;;;:::i;:::-;7614:15;;;;;:72;;;;6912:19;7610:133;;7877:13;;976:28530;7877:13;;;8148:32;976:28530;8148:32;;8219:30;;;;976:28530;8285:30;976:28530;;8285:30;;976:28530;;-1:-1:-1;;;;;976:28530:1;;;;;;7872:499;7908:19;7892:14;;;;;;976:28530;;8148:32;976:28530;;;;;;;;;:::i;:::-;8148:32;;:::i;:::-;976:28530;;;;;8219:30;;;;;:::i;:::-;976:28530;;;;;;;;7982:356;976:28530;;7297:1;976:28530;;;;;;;:::i;:::-;;;;;;:::i;:::-;;7982:356;;976:28530;;;8219:30;976:28530;;;;:::i;:::-;;7982:356;;976:28530;;;;;;;8219:30;7982:356;;976:28530;8285:30;7982:356;;976:28530;7982:356;:::i;:::-;976:28530;7877:13;;976:28530;;;;;;;;;;;;7892:14;;;;;;;;;8475:191;7892:14;;;;;;;7297:1;7892:14;;976:28530;8793:31;7892:14;;;;8568:30;7892:14;976:28530;7892:14;7283:15;8568:30;;:::i;:::-;976:28530;;;;:::i;:::-;8475:191;;:::i;:::-;976:28530;;;8793:31;;:::i;:::-;8906:8;;;;8891:23;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;8973:8:1;976:28530;;;6885:13;;;;;976:28530;6885:13;;7610:133;12704:15;;;976:28530;7713:15;976:28530;;7713:15;7614:72;7647:32;;976:28530;7647:32;;;;:::i;:::-;7633:53;;;;;7614:72;;976:28530;;;;;;-1:-1:-1;;976:28530:1;;;;;6183:41:20;:5;:41;:::i;:::-;976:28530:1;6638:47:20;:8;:47;:::i;:::-;976:28530:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5674:13:20;;976:28530:1;;;;5709:4:20;976:28530:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;976:28530:1;;;;;;3647:10:7;976:28530:1;;3639:7:7;976:28530:1;;;;;;3672:20:7;;;;;3668:72;;3796:58;3647:10;976:28530:1;3647:10:7;;976:28530:1;;3639:7:7;976:28530:1;;;;;;;;;;;;;;;;3796:58:7;976:28530:1;3668:72:7;3715:14;;;976:28530:1;3715:14:7;976:28530:1;;3715:14:7;976:28530:1;;;;;;-1:-1:-1;;976:28530:1;;;;;1055:104:6;;976:28530:1;1072:24:6;1089:6;1072:24;:::i;:::-;1120:6;;1103:24;1120:6;1103:24;:::i;:::-;1151:6;;1134:24;1151:6;1134:24;:::i;:::-;976:28530:1;;;;;;;;;;;;1055:104:6;;;976:28530:1;;;;-1:-1:-1;;;976:28530:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;1055:104:6;;;;;;;;;;:::i;:::-;976:28530:1;;;;;1055:104:6;976:28530:1;;1055:104:6;976:28530:1;;;;:::i;:::-;;;;;;-1:-1:-1;;976:28530:1;;;;;-1:-1:-1;;;;;6500:15:7;976:28530:1;13859:4;976:28530;;;13859:4;:::i;976:28530::-;;;-1:-1:-1;;976:28530:1;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;:::i;:::-;-1:-1:-1;;976:28530:1;;;10381:9;976:28530;;10381:9;10468:10;;;;;;976:28530;10480:19;10942:16;;;;;:::i;:::-;976:28530;11132:17;;976:28530;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;10865:1;10851:15;;11103:81;10851:15;11085:99;10851:15;976:28530;10851:15;;;11151:10;;976:28530;;;;:::i;:::-;;;11103:81;:::i;:::-;11085:99;;:::i;:::-;10480:19;976:28530;10453:13;;;976:28530;;;-1:-1:-1;;976:28530:1;;;;9370:58;9297:30;;:::i;:::-;976:28530;;;:::i;:::-;9337:22;;;:::i;:::-;;;;;:::i;:::-;;9412:9;9400:10;;976:28530;;;9370:58;:::i;976:28530::-;;;-1:-1:-1;;976:28530:1;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;:::i;:::-;3964:23;;;;:::i;:::-;3997:25;976:28530;4461:9;;4486:13;976:28530;;;;;;4481:1287;4501:10;;;;;;976:28530;5861:36;;;;:::i;4513:19::-;5034:16;;;;;;;;;;:::i;:::-;5114:17;976:28530;5114:17;;;;;;;:::i;:::-;:29;;;5110:90;;5548:31;5246:175;5308:17;;;;976:28530;5308:17;4898:1;5308:17;976:28530;5308:17;;:::i;:::-;4884:15;;;;5343:10;;976:28530;;;;:::i;:::-;;;5246:175;:::i;:::-;976:28530;;;5548:31;;:::i;:::-;5661:8;;;;5646:23;;;;:::i;:::-;;;;;;:::i;:::-;;5728:8;976:28530;;4513:19;976:28530;4486:13;;;;;;976:28530;;;-1:-1:-1;;976:28530:1;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;3500:25;3461:90;976:28530;;3461:82;976:28530;3290:31;976:28530;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;3290:31;:::i;:::-;3422:21;3371:31;;:::i;:::-;976:28530;;3422:21;;:::i;976:28530::-;3412:31;;;:::i;:::-;;;;;:::i;:::-;;3500:25;:::i;:::-;3527:9;;3461:82;;:::i;976:28530::-;;;;;;-1:-1:-1;;976:28530:1;;;;-1:-1:-1;;;;;976:28530:1;;:::i;:::-;;;;2728:7:7;976:28530:1;;;;;;;;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;;3381:5:7;976:28530:1;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3381:5:7;976:28530:1;;;;;;;-1:-1:-1;976:28530:1;;;;;;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;;;;;;;;;;;;;;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;:::i;:::-;6500:15:7;-1:-1:-1;;;;;6500:15:7;976:28530:1;14294:13;976:28530;14309:10;;;;;;976:28530;;;;;;;;14321:19;14384:7;14393:4;14384:7;;1489:1:0;14384:7:1;;;;:::i;:::-;976:28530;14372:10;14393:4;:::i;:::-;976:28530;14294:13;;976:28530;;;;;;-1:-1:-1;;976:28530:1;;;;;;;1124:66:7;976:28530:1;;;;;;-1:-1:-1;;976:28530:1;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;:::i;:::-;-1:-1:-1;;976:28530:1;;;;;11801:9;11897:10;;;;;;976:28530;11909:19;12387:25;;;;;:::i;:::-;976:28530;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;12464:26;976:28530;;;12605:15;;;:72;;;;;976:28530;12601:133;;;976:28530;12883:14;;;;;;-1:-1:-1;;976:28530:1;;;;12294:1;;13485:208;;976:28530;;13503:190;;-1:-1:-1;12280:15:1;;;;-1:-1:-1;976:28530:1;;-1:-1:-1;;;;;976:28530:1;;13503:190;:::i;13485:208::-;11909:19;976:28530;11882:13;;;12899:19;12294:1;976:28530;12973:353;976:28530;;13094:7;;;;:::i;:::-;;13138:35;:32;;;:35;:::i;:::-;;976:28530;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;:::i;:::-;;;;12973:353;;976:28530;;12973:353;;976:28530;;12973:353;;976:28530;;12973:353;;976:28530;12973:353;:::i;:::-;976:28530;12868:13;;12605:72;976:28530;;;12624:53;;;12605:72;;;976:28530;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;;-1:-1:-1;;976:28530:1;;;;:::o;:::-;;;;-1:-1:-1;;;;;976:28530:1;;;;;;:::o;:::-;;;-1:-1:-1;;;;;976:28530:1;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;:::o;:::-;;;;-1:-1:-1;976:28530:1;;;;;-1:-1:-1;976:28530:1;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;:::o;:::-;;;1055:104:6;;976:28530:1;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;:::o;:::-;-1:-1:-1;;;;;976:28530:1;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;9347:12;976:28530;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;976:28530:1;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;976:28530:1;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;976:28530:1;;;;;;-1:-1:-1;;976:28530:1;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;3400:1;976:28530;;;-1:-1:-1;;976:28530:1;;-1:-1:-1;976:28530:1;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;976:28530:1;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1055:104:6;976:28530:1;1055:104:6;;976:28530:1;;:::i;:::-;;;-1:-1:-1;976:28530:1;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;9325:1;976:28530;;;-1:-1:-1;;976:28530:1;;-1:-1:-1;976:28530:1;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1055:104:6;976:28530:1;1055:104:6;;976:28530:1;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;240:1:0:-;-1:-1:-1;;240:1:0;;;;;;;:::o;5278:988:7:-;5367:16;;;-1:-1:-1;;;;;976:28530:1;;;5367:38:7;;;:68;;;;5278:988;5363:123;;;5532:12;5626:367;5532:12;6021:178;5532:12;;;5583:17;;;;;5752:15;;;;976:28530:1;;;;;;;;;;;;5532:12:7;976:28530:1;;5855:10:7;;976:28530:1;;-1:-1:-1;976:28530:1;5887:7:7;5532:12;976:28530:1;-1:-1:-1;;;;;5583:17:7;-1:-1:-1;976:28530:1;;;;5887:26:7;;;;:::i;:::-;976:28530:1;;;;;5583:17:7;976:28530:1;5683:286:7;5532:12;5683:286;;976:28530:1;1451:66:7;976:28530:1;;5583:17:7;240:1:0;;976:28530:1;5752:15:7;240:1:0;;976:28530:1;5367:16:7;240:1:0;;976:28530:1;240:1:0;;;976:28530:1;240:1:0;;;976:28530:1;240:1:0;;;976:28530:1;240:1:0;5683:286:7;;;;;;:::i;:::-;976:28530:1;5656:327:7;;5626:367;:::i;:::-;976:28530:1;;5532:12:7;6147:11;;;976:28530:1;5583:17:7;6160:11;;;976:28530:1;240:1:0;;976:28530:1;;6130:55:7;;;976:28530:1;;;;240:1:0;;976:28530:1;;;;240:1:0;;;;;-1:-1:-1;;;;;;240:1:0;;;;;6130:55:7;;;-1:-1:-1;;;;;976:28530:1;6130:55:7;240:1:0;976:28530:1;6130:55:7;:::i;:::-;6021:178;:::i;:::-;6020:179;6003:257;;5278:988::o;6003:257::-;6231:18;;;-1:-1:-1;6231:18:7;;-1:-1:-1;6231:18:7;5363:123;5458:17;;;-1:-1:-1;5458:17:7;;-1:-1:-1;5458:17:7;5367:68;6500:15;;-1:-1:-1;;;;;6500:15:7;976:28530:1;-1:-1:-1;5367:68:7;;;976:28530:1;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1055:104:6;976:28530:1;1055:104:6;;976:28530:1;;:::i;:::-;;;-1:-1:-1;976:28530:1;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;19220:2157;976:28530;;-1:-1:-1;;;19537:36:1;;;;;976:28530;;;19220:2157;;-1:-1:-1;976:28530:1;19537:36;976:28530;19537:15;-1:-1:-1;;;;;976:28530:1;19537:36;;;;;;;-1:-1:-1;19537:36:1;;;19220:2157;976:28530;;;19587:29;19583:82;;976:28530;;19749:25;;;:::i;:::-;19810:21;;;;:::i;:::-;19847:13;6500:15:7;-1:-1:-1;;;;;976:28530:1;;-1:-1:-1;19862:10:1;;;;;;21286:84;;;;;;;;;;9325:1;21286:84;;:::i;19874:19::-;19948:7;;;;:::i;:::-;;976:28530;;;-1:-1:-1;976:28530:1;19537:36;976:28530;;;-1:-1:-1;976:28530:1;;;;20125:28;20121:84;;20295:18;9325:1;20295:18;;976:28530;20295:31;20291:92;;20476:20;;;976:28530;-1:-1:-1;;;;;976:28530:1;;;;;;;20476:31;;;20472:91;;976:28530;;;;20773:22;20769:81;;20950:26;;;976:28530;-1:-1:-1;;;;;976:28530:1;;;;;20946:93;;976:28530;;-1:-1:-1;;;;976:28530:1;;;;;-1:-1:-1;;;976:28530:1;;;;;9325:1;;21052:36;;-1:-1:-1;21052:36:1;;21103:29;;21052:36;;976:28530;;;:::i;21052:36::-;976:28530;:::i;:::-;21103:29;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;976:28530:1;21158:13;;976:28530;21146:25;21158:13;;21146:25;:::i;:::-;976:28530;21191:67;976:28530;;21199:25;:15;976:28530;;;;;;21199:15;;:::i;:::-;;:25;976:28530;;;;;;;;;21191:67;976:28530;19847:13;;20946:93;21008:16;;;-1:-1:-1;21008:16:1;19537:36;-1:-1:-1;21008:16:1;20769:81;20822:13;;;-1:-1:-1;20822:13:1;19537:36;-1:-1:-1;20822:13:1;20472:91;20534:14;;;-1:-1:-1;20534:14:1;19537:36;-1:-1:-1;20534:14:1;20291:92;19639:15;;;-1:-1:-1;20353:15:1;19537:36;-1:-1:-1;20353:15:1;20121:84;20180:10;;;-1:-1:-1;20180:10:1;19537:36;-1:-1:-1;20180:10:1;19537:36;;;;;;;-1:-1:-1;19537:36:1;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;976:28530;;;-1:-1:-1;976:28530:1;;;;;19220:2157;976:28530;;-1:-1:-1;;;19537:36:1;;;;;976:28530;;;19220:2157;;;;;;-1:-1:-1;976:28530:1;19537:36;976:28530;19537:15;-1:-1:-1;;;;;976:28530:1;19537:36;;;;;;;-1:-1:-1;19537:36:1;;;19220:2157;976:28530;;;19587:29;19583:82;;976:28530;;19749:25;;;:::i;:::-;19810:21;;;;:::i;:::-;19847:13;-1:-1:-1;6500:15:7;-1:-1:-1;;;;;6500:15:7;976:28530:1;19842:1427;19862:10;;;;;;21286:84;;;;;;;;;;:::i;19874:19::-;19948:7;;;;:::i;:::-;;976:28530;;;-1:-1:-1;976:28530:1;19537:36;976:28530;;;-1:-1:-1;976:28530:1;;;;20125:28;20121:84;;20295:18;1489:1:0;20295:18:1;;976:28530;20295:31;20291:92;;20476:20;;;976:28530;-1:-1:-1;;;;;976:28530:1;;;;;;;20476:31;;;20472:91;;976:28530;;;;20773:22;20769:81;;20950:26;;;976:28530;-1:-1:-1;;;;;976:28530:1;;;;;20946:93;;21052:36;1489:1:0;21052:36:1;;976:28530;21052:36;;;976:28530;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;21103:29;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;976:28530:1;21158:13;;976:28530;21146:25;21158:13;;21146:25;:::i;:::-;976:28530;21191:67;976:28530;;21199:25;:15;976:28530;;;;;;21199:15;;:::i;:::-;;:25;976:28530;;;;;;;;;21191:67;976:28530;19847:13;;19537:36;;;;;;-1:-1:-1;19537:36:1;;;;;;:::i;:::-;;;;28242:368;976:28530;;;;;;;;-1:-1:-1;976:28530:1;28393:20;976:28530;;;-1:-1:-1;976:28530:1;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;;;;;976:28530:1;-1:-1:-1;976:28530:1;;;28433:84;;-1:-1:-1;;;;;976:28530:1;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;28567:36;;-1:-1:-1;28567:36:1;;28242:368::o;28433:84::-;28482:24;;;-1:-1:-1;28482:24:1;;-1:-1:-1;28482:24:1;3995:1151:7;4085:16;;;-1:-1:-1;;;;;976:28530:1;;;4085:38:7;;;:68;;;;3995:1151;4081:123;;;4251:12;4345:527;4251:12;4900:179;4251:12;;;4302:17;;;;;4471:16;;;;976:28530:1;;;;;;;;;;;;;;;;;;;;4581:19:7;-1:-1:-1;;;;;4251:12:7;4581:19;;976:28530:1;;4622:14:7;4302:17;4622:14;;976:28530:1;;;4471:16:7;4658:11;;976:28530:1;4701:9:7;4733:10;4085:16;4701:9;;;4251:12;976:28530:1;;;;4691:20:7;4733:10;;976:28530:1;;;-1:-1:-1;976:28530:1;4765:7:7;4251:12;976:28530:1;-1:-1:-1;;;;;4302:17:7;-1:-1:-1;976:28530:1;;;;4765:27:7;;;;:::i;:::-;976:28530:1;;;;;4302:17:7;976:28530:1;4402:446:7;4251:12;4402:446;;976:28530:1;1124:66:7;976:28530:1;;4302:17:7;976:28530:1;;;4471:16:7;976:28530:1;;;4085:16:7;976:28530:1;;;4733:10:7;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;4402:446:7;;;;;;:::i;4085:68::-;6500:15;;-1:-1:-1;;;;;6500:15:7;976:28530:1;-1:-1:-1;4085:68:7;;;976:28530:1;;;;;;;:::i;:::-;;;;-1:-1:-1;976:28530:1;;;;:::o;15846:2898::-;;;;;976:28530;;:::i;:::-;;;;;;;:::i;:::-;16112:29;;16162:21;;;:::i;:::-;16151:8;;;;:32;976:28530;;-1:-1:-1;;;16309:36:1;;;;;976:28530;;;-1:-1:-1;976:28530:1;16309:36;976:28530;16309:15;-1:-1:-1;;;;;976:28530:1;16309:36;;;;;;-1:-1:-1;16309:36:1;;;;15846:2898;16359:16;;;976:28530;16359:29;16355:82;;16483:25;;;;;:::i;:::-;;;16544:21;;;:::i;:::-;;;-1:-1:-1;16576:2029:1;16596:10;;;;;;18631:85;;;;;;3400:1;18631:85;;;;;;;;;:::i;:::-;976:28530;;;18727:10;;15846:2898;:::o;16608:19::-;16683:7;;;;;;;;;;:::i;:::-;;16804:22;16151:8;16804:22;;976:28530;-1:-1:-1;;;;;976:28530:1;;;16804:44;;;:81;;;;16608:19;16800:150;;;976:28530;17073:22;;;976:28530;;17072:44;;;16608:19;17068:103;;-1:-1:-1;;;;;17323:14:1;;;976:28530;;;;;;;;;;;;;;17570:17;;976:28530;;;17611:12;;;;;976:28530;;;;;;;:::i;:::-;-1:-1:-1;976:28530:1;;17218:420;16151:8;17218:420;;976:28530;-1:-1:-1;;;;;6500:15:7;976:28530:1;;17218:420;;976:28530;17323:14;17218:420;;976:28530;-1:-1:-1;17611:12:1;17218:420;;976:28530;17218:420;;;976:28530;17218:420;;;976:28530;;;;;;;;;17218:420;;976:28530;17218:420;;;976:28530;17218:420;;;976:28530;-1:-1:-1;17818:247:1;16151:8;17218:420;;976:28530;17218:420;26697:392;16309:36;976:28530;17218:420;;;976:28530;16151:8;976:28530;17218:420;;976:28530;17218:420;976:28530;17218:420;;976:28530;17218:420;17323:14;17218:420;;976:28530;17218:420;;;976:28530;;;17218:420;;;;;976:28530;17218:420;;27029:16;976:28530;;;26697:392;;;;;;976:28530;;;-1:-1:-1;;;;;976:28530:1;;17323:14;976:28530;;;;;;-1:-1:-1;;;;;976:28530:1;;17323:14;976:28530;;;;;;-1:-1:-1;;;;;976:28530:1;;;17218:420;976:28530;;;;;;-1:-1:-1;;;;;976:28530:1;;;17218:420;976:28530;;;;;;240:1:0;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26697:392;;;;;;;;;;;:::i;:::-;976:28530;26670:433;;976:28530;-1:-1:-1;976:28530:1;16309:36;16151:8;976:28530;;-1:-1:-1;976:28530:1;;17903:25;17899:77;;-1:-1:-1;3400:1:1;976:28530;;;17818:247;;17899:77;17952:5;;;;;;;;;;;;976:28530;;;;-1:-1:-1;976:28530:1;16309:36;16151:8;976:28530;;-1:-1:-1;976:28530:1;;;;;;16151:8;17218:420;;976:28530;3400:1;976:28530;;;;;;;-1:-1:-1;;;;;17218:420:1;976:28530;17218:420;;976:28530;;;-1:-1:-1;;;;;976:28530:1;;;;;;;17323:14;17218:420;;976:28530;-1:-1:-1;;;976:28530:1;;;;;;;-1:-1:-1;;;976:28530:1;;;;;-1:-1:-1;;;;;17611:12:1;17218:420;;976:28530;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;17218:420;;;;976:28530;;;;;17218:420;;;976:28530;16309:36;976:28530;;;;-1:-1:-1;;;;;;976:28530:1;-1:-1:-1;;;;;976:28530:1;;;;;;;17218:420;;976:28530;;;;;;17218:420;;;976:28530;-1:-1:-1;;;;;;976:28530:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;976:28530:1;;;;17218:420;;;976:28530;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;:::i;:::-;;;;;;17818:247;976:28530;16151:8;976:28530;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;;3400:1;976:28530;;;;;;;;;;;;;;;17323:14;;;976:28530;18155:27;18151:256;;976:28530;18421:29;;3400:1;18421:29;;;;;;:::i;:::-;;;;;;;:::i;:::-;;17218:420;18476:13;;976:28530;18464:25;;;;;:::i;:::-;976:28530;16151:8;18504:17;16151:8;;;;;18504;:17;:::i;:::-;976:28530;;;;;;;;;;;;;;18541:53;16151:8;976:28530;;;;;;;18541:53;;976:28530;16581:13;;;;;18151:256;18299:34;;;;-1:-1:-1;976:28530:1;15013:3;976:28530;;;-1:-1:-1;976:28530:1;;15013:25;;14928:117;;18299:34;18298:35;18294:99;;18151:256;;;;;976:28530;;;;-1:-1:-1;976:28530:1;;;;;;;;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;-1:-1:-1;;976:28530:1;;;;;;1055:104:6;;;;3400:1:1;1055:104:6;976:28530:1;1055:104:6;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;240:1:0;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3400:1:1;976:28530;;;;16151:8;976:28530;;;;;;;;;;;;;;;;;;-1:-1:-1;976:28530:1;16151:8;-1:-1:-1;976:28530:1;;;;;;;;16151:8;976:28530;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;3400:1:1;976:28530;;;;;;;;17072:44;17099:17;976:28530;17099:17;;976:28530;;;17072:44;;16800:150;16912:23;;;-1:-1:-1;16912:23:1;16309:36;-1:-1:-1;16912:23:1;16804:81;6500:15:7;;-1:-1:-1;;;;;6500:15:7;976:28530:1;-1:-1:-1;16852:33:1;16804:81;;;16309:36;;;;;-1:-1:-1;16309:36:1;;;;;;:::i;:::-;;;;;;15846:2898;;;;;;;;;;976:28530;;:::i;:::-;;;;;;;:::i;:::-;16112:29;;16162:21;;;:::i;:::-;16151:8;;;;:32;976:28530;;-1:-1:-1;;;16309:36:1;;;;;976:28530;;;;-1:-1:-1;976:28530:1;16309:36;976:28530;16309:15;-1:-1:-1;;;;;976:28530:1;16309:36;;;;;;;-1:-1:-1;16309:36:1;;;15846:2898;976:28530;;;16359:29;16355:82;;16483:25;;;;:::i;:::-;;;16544:21;;;:::i;:::-;;;-1:-1:-1;16576:2029:1;16596:10;;;;;;18631:85;;;;;;;;;;;;;;;;;;;;:::i;16608:19::-;16683:7;;;;;;;;;;:::i;:::-;;16804:22;16151:8;16804:22;;976:28530;-1:-1:-1;;;;;976:28530:1;;;16804:44;;;:81;;;;16608:19;16800:150;;;976:28530;17073:22;;976:28530;;17072:44;;;16608:19;17068:103;;17323:14;;;976:28530;;;;;;17570:17;;;976:28530;17611:12;;;;976:28530;;;17611:12;;976:28530;;;;-1:-1:-1;;;;;976:28530:1;;;-1:-1:-1;;;;;976:28530:1;;16151:8;976:28530;;;;:::i;:::-;-1:-1:-1;976:28530:1;;17218:420;976:28530;6500:15:7;976:28530:1;-1:-1:-1;;;;;6500:15:7;976:28530:1;17218:420;;976:28530;17323:14;17218:420;;976:28530;-1:-1:-1;17611:12:1;17218:420;;976:28530;17218:420;;;976:28530;17218:420;;;976:28530;;;;;;;;;17218:420;;976:28530;17218:420;;;976:28530;17218:420;;;976:28530;-1:-1:-1;17818:247:1;16151:8;17218:420;;976:28530;17218:420;26697:392;16309:36;976:28530;17218:420;;;976:28530;16151:8;976:28530;17218:420;;976:28530;17218:420;976:28530;17218:420;;976:28530;17218:420;17323:14;17218:420;;976:28530;17218:420;;;976:28530;;;17218:420;;;;;976:28530;17218:420;;27029:16;976:28530;;;26697:392;;;;;;976:28530;;;-1:-1:-1;;;;;976:28530:1;;17323:14;976:28530;;;;;;-1:-1:-1;;;;;976:28530:1;;17323:14;976:28530;;;;;;-1:-1:-1;;;;;976:28530:1;;;17218:420;976:28530;;;;;;-1:-1:-1;;;;;976:28530:1;;;17218:420;976:28530;;;;;;240:1:0;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26697:392;;;;;;;;;;;:::i;:::-;976:28530;26670:433;;976:28530;-1:-1:-1;976:28530:1;16309:36;16151:8;976:28530;;-1:-1:-1;976:28530:1;;17903:25;17899:77;;-1:-1:-1;1489:1:0;976:28530:1;;;17818:247;;17899:77;17952:5;;;;;;;;;;;976:28530;;;;-1:-1:-1;976:28530:1;16309:36;16151:8;976:28530;;-1:-1:-1;976:28530:1;;;;;;16151:8;17218:420;;976:28530;1489:1:0;976:28530:1;;;;;;;-1:-1:-1;;;;;17218:420:1;976:28530;17218:420;;976:28530;;;-1:-1:-1;;;;;976:28530:1;;;;;;;17323:14;17218:420;;976:28530;-1:-1:-1;;;976:28530:1;;;;;;;-1:-1:-1;;;976:28530:1;;;;;-1:-1:-1;;;;;17611:12:1;17218:420;;976:28530;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;17218:420;;;;976:28530;;;;;17218:420;;;976:28530;16309:36;976:28530;;;;-1:-1:-1;;;;;;976:28530:1;-1:-1:-1;;;;;976:28530:1;;;;;;;17218:420;;976:28530;;;;;;17218:420;;;976:28530;-1:-1:-1;;;;;;976:28530:1;;;;;;;;;;;;;;;;;-1:-1:-1;;;976:28530:1;;;;17218:420;;;976:28530;;;;;;-1:-1:-1;;;;;976:28530:1;;;;;;;;;;;;:::i;:::-;;;;;;17818:247;976:28530;16151:8;976:28530;;;;;;;;;;;-1:-1:-1;;976:28530:1;;;;;;;1489:1:0;976:28530:1;;;;;;;;;;;;;;;17323:14;;;976:28530;18155:27;18151:256;;976:28530;18421:29;;1489:1:0;18421:29:1;;;;;;:::i;:::-;;;;;;;:::i;:::-;;17218:420;18476:13;;976:28530;18464:25;;;;;:::i;:::-;976:28530;16151:8;18504:17;16151:8;;;;;18504;:17;:::i;:::-;976:28530;;;;;;;;;;;;;;18541:53;16151:8;976:28530;;;;;;;18541:53;;976:28530;16581:13;;;;18151:256;18299:34;;;;-1:-1:-1;976:28530:1;15013:3;976:28530;;;-1:-1:-1;976:28530:1;;15013:25;;14928:117;;18299:34;18298:35;18294:99;;18151:256;;;;;976:28530;;;;-1:-1:-1;976:28530:1;;;;;;;;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;;-1:-1:-1;976:28530:1;-1:-1:-1;;976:28530:1;;;;;;1055:104:6;;;;1489:1:0;1055:104:6;976:28530:1;1055:104:6;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;240:1:0;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1489:1:0;976:28530:1;;;;16151:8;976:28530;;;;;;;;;;;;;;;;;;-1:-1:-1;976:28530:1;16151:8;-1:-1:-1;976:28530:1;;;;;;;;16151:8;976:28530;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;976:28530:1;;;;-1:-1:-1;1489:1:0;976:28530:1;;;;;;;;17072:44;17099:17;976:28530;17099:17;;976:28530;;;17072:44;;16804:81;6500:15:7;;-1:-1:-1;;;;;6500:15:7;976:28530:1;-1:-1:-1;16852:33:1;16804:81;;;16309:36;;;;;;;-1:-1:-1;16309:36:1;;;;;;:::i;:::-;;;;;28803:701;;28944:23;28803:701;28944:23;:::i;:::-;28978:24;29001:1;976:28530;;29066:13;29001:1;29081:17;;;;;;29486:11;;;;28803:701;:::o;29100:19::-;29166:11;;;;:::i;:::-;;976:28530;;29001:1;29251:215;29271:21;;;;;;29100:19;;;1489:1:0;976:28530:1;29066:13;;29294:19;29354:14;;;1489:1:0;29354:14:1;;;;;;:::i;:::-;976:28530;29333:35;;;;:::i;:::-;976:28530;;29294:19;976:28530;29256:13;;;;27816:225;;976:28530;-1:-1:-1;976:28530:1;27885:11;976:28530;;-1:-1:-1;;;;;976:28530:1;-1:-1:-1;976:28530:1;;;27881:80;;-1:-1:-1;;;;;976:28530:1;;-1:-1:-1;976:28530:1;27885:11;976:28530;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;28011:23;;-1:-1:-1;28011:23:1;;27816:225::o;27881:80::-;27930:20;;;-1:-1:-1;27930:20:1;;-1:-1:-1;27930:20:1;1308:634:18;1430:17;-1:-1:-1;29282:17:23;-1:-1:-1;;;29282:17:23;;;29278:103;;1308:634:18;29398:17:23;29407:8;29978:7;29398:17;;;29394:103;;1308:634:18;29523:8:23;29514:17;;;29510:103;;1308:634:18;29639:7:23;29630:16;;;29626:100;;1308:634:18;29752:7:23;29743:16;;;29739:100;;1308:634:18;29865:7:23;29856:16;;;29852:100;;1308:634:18;29969:16:23;;29965:66;;1308:634:18;29978:7:23;1545:94:18;1450:1;976:28530:1;;1488:18:18;976:28530:1;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;1055:104:6;;976:28530:1;;:::i;:::-;;;;;;;1545:94:18;;;1652:247;-1:-1:-1;;976:28530:1;;-1:-1:-1;;;1706:111:18;;;;976:28530:1;1706:111:18;976:28530:1;1867:10:18;;1863:21;;29978:7:23;1652:247:18;;;;1863:21;1879:5;;1308:634;:::o;29965:66:23:-;30015:1;976:28530:1;;;;29965:66:23;;29852:100;29865:7;29936:1;976:28530:1;;;;29852:100:23;;;29739;29752:7;29823:1;976:28530:1;;;;29739:100:23;;;29626;29639:7;29710:1;976:28530:1;;;;29626:100:23;;;29510:103;29523:8;29596:2;976:28530:1;;;;29510:103:23;;;29394;29407:8;29480:2;976:28530:1;;;;29394:103:23;;;29278;-1:-1:-1;29364:2:23;;-1:-1:-1;;;;976:28530:1;;29278:103:23;;3945:262:20;4029:4;4038:11;-1:-1:-1;;;;;976:28530:1;4021:28:20;;:63;;3945:262;4017:184;;;4107:22;4100:29;:::o;4017:184::-;976:28530:1;;4304:80:20;;;976:28530:1;2079:95:20;976:28530:1;;4326:11:20;976:28530:1;2079:95:20;;976:28530:1;4339:14:20;2079:95;;;976:28530:1;4355:13:20;2079:95;;;976:28530:1;4029:4:20;2079:95;;;976:28530:1;2079:95:20;4304:80;;;;;;:::i;:::-;976:28530:1;4294:91:20;;4160:30;:::o;4021:63::-;4070:14;;4053:13;:31;4021:63;;5017:176;3993:249:21;5017:176:20;5153:20;;:::i;:::-;3993:249:21;;;;-1:-1:-1;;;3993:249:21;;;;;;;;;;;5017:176:20;:::o;1494:429:22:-;;;1620:18;;;;1707:33;;;;:::i;:::-;976:28530:1;;;;;;;1761:33:22;:56;;;;1754:63;;;:::o;1761:56::-;-1:-1:-1;;;;;976:28530:1;;;;;1798:19:22;;1754:63;-1:-1:-1;1754:63:22:o;976:28530:1:-;;;;;;;;;;;;1616:301:22;976:28530:1;;;;2558:60:22;976:28530:1;;;;2558:60:22;;;;;;;;;;;;;;;976:28530:1;;;;;;;;;;;:::i;:::-;2558:60:22;1055:104:6;;2558:60:22;;;;;;:::i;:::-;2527:101;;;;;;:::i;:::-;2646:42;;;1616:301;2646:134;;;1848:58;;:::o;2646:134::-;976:28530:1;;2558:60:22;976:28530:1;;;2704:29:22;;976:28530:1;;;;2558:60:22;2704:29;976:28530:1;-1:-1:-1;;;2704:76:22;;1848:58::o;2646:42::-;976:28530:1;;2558:60:22;976:28530:1;;2669:19:22;;2646:42;;;976:28530:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24099:2238;;;;976:28530;;24417:11;1489:1:0;24417:11:1;;24413:146;;24596:21;;976:28530;-1:-1:-1;;;;;976:28530:1;;24631:31;;24627:406;;976:28530;;-1:-1:-1;;;25104:20:1;;976:28530;;;24596:21;976:28530;25104:20;976:28530;25104:20;;;;;;;;976:28530;25104:20;;;24099:2238;25140:13;;976:28530;25135:777;25155:10;;;;;;976:28530;;;;24596:21;976:28530;25959:67;976:28530;;;;;;;;;;;;;25959:67;;25104:20;25959:67;;;:::i;:::-;;;;;;;;;;976:28530;25959:67;;;25135:777;25958:68;;25954:134;;26241:58;;26309:21;24099:2238;:::o;26241:58::-;26273:14;;;:::i;25954:134::-;26053:20;;;976:28530;26053:20;25104;976:28530;26053:20;25959:67;;;24596:21;25959:67;;24596:21;25959:67;;;;;;24596:21;25959:67;;;:::i;:::-;;;976:28530;;;;;;;:::i;:::-;25959:67;;;;;;-1:-1:-1;25959:67:1;;25167:19;25218:9;;;;;;;;:::i;:::-;976:28530;25340:10;;25336:57;;25411:18;;25407:76;;25591:22;;;25587:87;;976:28530;1489:1:0;976:28530:1;;;;25167:19;25140:13;976:28530;25140:13;;;;25587:87;25640:19;;;976:28530;25640:19;25104:20;976:28530;25640:19;25407:76;24875:12;;;976:28530;25456:12;25104:20;976:28530;25456:12;25336:57;25370:8;;;1489:1:0;25370:8:1;;;25104:20;;;24596:21;25104:20;;24596:21;25104:20;;;;;;24596:21;25104:20;;;:::i;:::-;;;976:28530;;;;;;;:::i;:::-;25104:20;;;;;;-1:-1:-1;25104:20:1;;24627:406;24760:13;;976:28530;24760:13;;;;24775:10;;;;;;24934:66;;;;;25014:8;976:28530;25014:8;:::o;24934:66::-;24970:14;;;:::i;:::-;976:28530;25014:8;:::o;24787:19::-;24830:9;;;;:::i;:::-;976:28530;24826:80;;1489:1:0;976:28530:1;24760:13;;24413:146;24485:15;24451:97;24485:15;;;24502:9;24485:15;1489:1:0;24485:15:1;;;;;:::i;:::-;;24502:9;;:::i;:::-;976:28530;24451:97;;:::i;24099:2238::-;;;;976:28530;;24417:11;24427:1;24417:11;;24413:146;;24596:21;;976:28530;-1:-1:-1;;;;;976:28530:1;;24631:31;;24627:406;;976:28530;;-1:-1:-1;;;25104:20:1;;-1:-1:-1;;976:28530:1;24596:21;976:28530;25104:20;976:28530;25104:20;;;;;;;;-1:-1:-1;25104:20:1;;;24099:2238;25140:13;;-1:-1:-1;25135:777:1;25155:10;;;;;;25922:309;;;;24596:21;25922:309;26109:67;25922:309;976:28530;;;;;;;;;;;;26109:67;;25104:20;26109:67;;;:::i;:::-;;;;;;;;;;25922:309;26109:67;;;25135:777;26108:68;;26104:127;;26241:58;;26309:21;24099:2238;:::o;26104:127::-;26199:21;;;25922:309;26199:21;25104:20;25922:309;26199:21;26109:67;;;24596:21;26109:67;;24596:21;26109:67;;;;;;24596:21;26109:67;;;:::i;:::-;;;976:28530;;;;;;;:::i;:::-;26109:67;;;;;;-1:-1:-1;26109:67:1;;25167:19;25218:9;;;;;;;;:::i;:::-;976:28530;25340:10;;25336:57;;25411:18;;25407:76;;25591:22;;;25587:87;;976:28530;24427:1;976:28530;;;;25167:19;25140:13;976:28530;25140:13;;;;25336:57;25370:8;;;24427:1;25370:8;;;25104:20;;;24596:21;25104:20;;24596:21;25104:20;;;;;;24596:21;25104:20;;;:::i;:::-;;;976:28530;;;;;;;:::i;:::-;25104:20;;;;;;-1:-1:-1;25104:20:1;;24627:406;24760:13;;-1:-1:-1;24760:13:1;;;;24775:10;;;;;;24934:66;;;;;25014:8;-1:-1:-1;25014:8:1;:::o;24787:19::-;24830:9;;;;:::i;:::-;976:28530;24826:80;;24427:1;976:28530;24760:13;;24413:146;24485:15;24451:97;24485:15;;;24502:9;24485:15;-1:-1:-1;24485:15:1;;;;;:::i;3368:267:16:-;1390:66;3491:46;;1390:66;;;2625:40;;2679:11;2688:2;2679:11;;2675:69;;976:28530:1;;;;;;;:::i;:::-;2311:2:16;976:28530:1;;;;;;;1055:104:6;976:28530:1;;;2324:106:16;;;3553:22;:::o;2675:69::-;2713:20;;;976:28530:1;2713:20:16;;976:28530:1;2713:20:16;3487:142;976:28530:1;;;1390:66:16;;;;976:28530:1;1390:66:16;:::i;:::-;;;;:::i;3368:267::-;1390:66;3491:46;;1390:66;;;2625:40;;2679:11;2688:2;2679:11;;2675:69;;976:28530:1;;;;;;;:::i;3487:142:16:-;976:28530:1;;;1390:66:16;;;;6668:16:20;1390:66:16;:::i;976:28530:1:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;976:28530:1;;;;:::o;:::-;;;:::o;2129:778:19:-;976:28530:1;;;2129:778:19;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:19;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;21968:1538:1:-;22249:21;;976:28530;21968:1538;;;;;-1:-1:-1;;;;;976:28530:1;;22284:31;;22280:309;;22693:10;;;;;22689:449;;21968:1538;22249:21;;23148:261;;;;;976:28530;;;;;;;;;;;;;23185:44;;;;;;976:28530;;;;;;:::i;:::-;23185:44;;;;;;;;;976:28530;23185:44;;;23148:261;23184:45;;23180:110;;23148:261;23419:58;;23487:12;21968:1538;:::o;23180:110::-;23256:19;;;976:28530;23256:19;23185:44;976:28530;23256:19;23185:44;;;22249:21;23185:44;;22249:21;23185:44;;;;;;22249:21;23185:44;;;:::i;:::-;;;976:28530;;;;;;;:::i;:::-;23185:44;;;;;;-1:-1:-1;23185:44:1;;23148:261;976:28530;;;;;;;;;;;;;23311:44;;;;;;976:28530;;;;;;:::i;:::-;23311:44;;;;;;;;;976:28530;23311:44;;;23148:261;23310:45;23148:261;23306:103;23378:20;;;976:28530;23378:20;23311:44;976:28530;23378:20;23311:44;;;22249:21;23311:44;;22249:21;23311:44;;;;;;22249:21;23311:44;;;:::i;:::-;;;976:28530;;;;;;;:::i;:::-;23311:44;;;;;;-1:-1:-1;23311:44:1;;22689:449;976:28530;;;;;;;;;;22724:20;;22249:21;22724:20;;;;;;;;;;;976:28530;22724:20;;;22689:449;22723:21;;22719:79;;22906:22;;;22902:87;;976:28530;;;;;;;;22689:449;;22724:20;;;22249:21;22724:20;;22249:21;22724:20;;;;;;22249:21;22724:20;;;:::i;:::-;;;976:28530;;;;;;;:::i;:::-;22724:20;;;;;;-1:-1:-1;22724:20:1;;22280:309;22412:10;;;;;22408:68;;22490:66;;22570:8;976:28530;22570:8;:::o;27265:415::-;27328:18;27324:350;;27265:415;:::o;27324:350::-;1375:21:12;;:30;1371:125;;27345:1:1;27626:10;;;;;1548:33:12;;;;:::i;:::-;1595:8;;1591:58;;27265:415:1;:::o;1591:58:12:-;976:28530:1;;5690:21:12;:17;;5815:105;;;;;;5686:301;5957:19;;;27345:1:1;5957:19:12;;27345:1:1;5957:19:12;1371:125;1455:21;1428:57;;;27345:1:1;1428:57:12;;976:28530:1;;;;27345:1;1428:57:12;5203:1551:19;;;6283:66;6270:79;;6266:164;;976:28530:1;;;;;;-1:-1:-1;976:28530:1;;;;;;;;;;;;;;;;;;;6541:24:19;;;;;;;;;-1:-1:-1;6541:24:19;-1:-1:-1;;;;;976:28530:1;;6579:20:19;6575:113;;6698:49;-1:-1:-1;6698:49:19;-1:-1:-1;5203:1551:19;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:19;6541:24;6615:62;-1:-1:-1;6615:62:19;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o"
            },
            "methodIdentifiers": {
              "attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))": "f17325e7",
              "attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))": "3c042715",
              "eip712Domain()": "84b0196e",
              "getAttestTypeHash()": "12b11a17",
              "getAttestation(bytes32)": "a3112a64",
              "getDomainSeparator()": "ed24911d",
              "getName()": "17d7de7c",
              "getNonce(address)": "2d0335ab",
              "getRevokeOffchain(address,bytes32)": "b469318d",
              "getRevokeTypeHash()": "b83010d3",
              "getSchemaRegistry()": "f10b5cc8",
              "getTimestamp(bytes32)": "d45c4435",
              "increaseNonce(uint256)": "79f7573a",
              "isAttestationValid(bytes32)": "e30bb563",
              "multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])": "44adc90e",
              "multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])": "95411525",
              "multiRevoke((bytes32,(bytes32,uint256)[])[])": "4cb7e9e5",
              "multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])": "0eabf660",
              "multiRevokeOffchain(bytes32[])": "13893f61",
              "multiTimestamp(bytes32[])": "e71ff365",
              "revoke((bytes32,(bytes32,uint256)))": "46926267",
              "revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))": "a6d4dbc7",
              "revokeOffchain(bytes32)": "cf190f34",
              "timestamp(bytes32)": "4d003070",
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISchemaRegistry\",\"name\":\"registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessDenied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyRevoked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyRevokedOffchain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyTimestamped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DeadlineExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAttestation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAttestations\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExpirationTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOffset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRegistry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevocation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevocations\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSchema\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVerifier\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Irrevocable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongSchema\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"schemaUID\",\"type\":\"bytes32\"}],\"name\":\"Attested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"schemaUID\",\"type\":\"bytes32\"}],\"name\":\"Revoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"RevokedOffchain\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"Timestamped\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct AttestationRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"attest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature\",\"name\":\"signature\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct DelegatedAttestationRequest\",\"name\":\"delegatedRequest\",\"type\":\"tuple\"}],\"name\":\"attestByDelegation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAttestTypeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"getAttestation\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"time\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revocationTime\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Attestation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"getRevokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRevokeTypeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSchemaRegistry\",\"outputs\":[{\"internalType\":\"contract ISchemaRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"name\":\"increaseNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"isAttestationValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"internalType\":\"struct MultiAttestationRequest[]\",\"name\":\"multiRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiAttest\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct MultiDelegatedAttestationRequest[]\",\"name\":\"multiDelegatedRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiAttestByDelegation\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"internalType\":\"struct MultiRevocationRequest[]\",\"name\":\"multiRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiRevoke\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct MultiDelegatedRevocationRequest[]\",\"name\":\"multiDelegatedRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiRevokeByDelegation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"multiRevokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"multiTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct RevocationRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"revoke\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature\",\"name\":\"signature\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct DelegatedRevocationRequest\",\"name\":\"delegatedRequest\",\"type\":\"tuple\"}],\"name\":\"revokeByDelegation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"revokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"timestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}]},\"events\":{\"Attested(address,address,bytes32,bytes32)\":{\"params\":{\"attester\":\"The attesting account.\",\"recipient\":\"The recipient of the attestation.\",\"schemaUID\":\"The UID of the schema.\",\"uid\":\"The UID of the new attestation.\"}},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"NonceIncreased(uint256,uint256)\":{\"params\":{\"newNonce\":\"The new value.\",\"oldNonce\":\"The previous nonce.\"}},\"Revoked(address,address,bytes32,bytes32)\":{\"params\":{\"attester\":\"The attesting account.\",\"recipient\":\"The recipient of the attestation.\",\"schemaUID\":\"The UID of the schema.\",\"uid\":\"The UID the revoked attestation.\"}},\"RevokedOffchain(address,bytes32,uint64)\":{\"params\":{\"data\":\"The data.\",\"revoker\":\"The address of the revoker.\",\"timestamp\":\"The timestamp.\"}},\"Timestamped(bytes32,uint64)\":{\"params\":{\"data\":\"The data.\",\"timestamp\":\"The timestamp.\"}}},\"kind\":\"dev\",\"methods\":{\"attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))\":{\"params\":{\"request\":\"The arguments of the attestation request.\"},\"returns\":{\"_0\":\"The UID of the new attestation. Example:     attest({         schema: \\\"0facc36681cbe2456019c1b0d1e7bedd6d1d40f6f324bf3dd3a4cef2999200a0\\\",         data: {             recipient: \\\"0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf\\\",             expirationTime: 0,             revocable: true,             refUID: \\\"0x0000000000000000000000000000000000000000000000000000000000000000\\\",             data: \\\"0xF00D\\\",             value: 0         }     })\"}},\"attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"params\":{\"delegatedRequest\":\"The arguments of the delegated attestation request.\"},\"returns\":{\"_0\":\"The UID of the new attestation. Example:     attestByDelegation({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 0         },         signature: {             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         attester: '0xc5E8740aD971409492b1A63Db8d83025e0Fc427e',         deadline: 1673891048     })\"}},\"constructor\":{\"details\":\"Creates a new EAS instance.\",\"params\":{\"registry\":\"The address of the global schema registry.\"}},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"getAttestTypeHash()\":{\"returns\":{\"_0\":\"The EIP712 type hash for the attest function.\"}},\"getAttestation(bytes32)\":{\"params\":{\"uid\":\"The UID of the attestation to retrieve.\"},\"returns\":{\"_0\":\"The attestation data members.\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"The domain separator used in the encoding of the signatures for attest, and revoke.\"}},\"getName()\":{\"returns\":{\"_0\":\"The EIP712 name.\"}},\"getNonce(address)\":{\"params\":{\"account\":\"The requested account.\"},\"returns\":{\"_0\":\"The current nonce.\"}},\"getRevokeOffchain(address,bytes32)\":{\"params\":{\"data\":\"The data to query.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"getRevokeTypeHash()\":{\"returns\":{\"_0\":\"The EIP712 type hash for the revoke function.\"}},\"getSchemaRegistry()\":{\"returns\":{\"_0\":\"The address of the global schema registry.\"}},\"getTimestamp(bytes32)\":{\"params\":{\"data\":\"The data to query.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"increaseNonce(uint256)\":{\"params\":{\"newNonce\":\"The (higher) new value.\"}},\"isAttestationValid(bytes32)\":{\"params\":{\"uid\":\"The UID of the attestation to retrieve.\"},\"returns\":{\"_0\":\"Whether an attestation exists.\"}},\"multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])\":{\"params\":{\"multiRequests\":\"The arguments of the multi attestation requests. The requests should be grouped by distinct     schema ids to benefit from the best batching optimization.\"},\"returns\":{\"_0\":\"The UIDs of the new attestations. Example:     multiAttest([{         schema: '0x33e9094830a5cba5554d1954310e4fbed2ef5f859ec1404619adea4207f391fd',         data: [{             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 1000         },         {             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 0,             revocable: false,             refUID: '0x480df4a039efc31b11bfdf491b383ca138b6bde160988222a2a3509c02cee174',             data: '0x00',             value: 0         }],     },     {         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',         data: [{             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 0,             revocable: true,             refUID: '0x75bf2ed8dca25a8190c50c52db136664de25b2449535839008ccfdab469b214f',             data: '0x12345678',             value: 0         },     }])\"}},\"multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"params\":{\"multiDelegatedRequests\":\"The arguments of the delegated multi attestation requests. The requests should be     grouped by distinct schema ids to benefit from the best batching optimization.\"},\"returns\":{\"_0\":\"The UIDs of the new attestations. Example:     multiAttestByDelegation([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 0         },         {             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 0,             revocable: false,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x00',             value: 0         }],         signatures: [{             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         {             v: 28,             r: '0x487s...67bb',             s: '0x12ad...2366'         }],         attester: '0x1D86495b2A7B524D747d2839b3C645Bed32e8CF4',         deadline: 1673891048     }])\"}},\"multiRevoke((bytes32,(bytes32,uint256)[])[])\":{\"params\":{\"multiRequests\":\"The arguments of the multi revocation requests. The requests should be grouped by distinct     schema ids to benefit from the best batching optimization. Example:     multiRevoke([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',             value: 1000         },         {             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',             value: 0         }],     },     {         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',         data: [{             uid: '0x053d42abce1fd7c8fcddfae21845ad34dae287b2c326220b03ba241bc5a8f019',             value: 0         },     }])\"}},\"multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"params\":{\"multiDelegatedRequests\":\"The arguments of the delegated multi revocation attestation requests. The requests     should be grouped by distinct schema ids to benefit from the best batching optimization. Example:     multiRevokeByDelegation([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',             value: 1000         },         {             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',             value: 0         }],         signatures: [{             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         {             v: 28,             r: '0x487s...67bb',             s: '0x12ad...2366'         }],         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',         deadline: 1673891048     }])\"}},\"multiRevokeOffchain(bytes32[])\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was revoked with.\"}},\"multiTimestamp(bytes32[])\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"revoke((bytes32,(bytes32,uint256)))\":{\"params\":{\"request\":\"The arguments of the revocation request. Example:     revoke({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             uid: '0x101032e487642ee04ee17049f99a70590c735b8614079fc9275f9dd57c00966d',             value: 0         }     })\"}},\"revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"params\":{\"delegatedRequest\":\"The arguments of the delegated revocation request. Example:     revokeByDelegation({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             uid: '0xcbbc12102578c642a0f7b34fe7111e41afa25683b6cd7b5a14caf90fa14d24ba',             value: 0         },         signature: {             v: 27,             r: '0xb593...7142',             s: '0x0f5b...2cce'         },         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',         deadline: 1673891048     })\"}},\"revokeOffchain(bytes32)\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was revoked with.\"}},\"timestamp(bytes32)\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"title\":\"EAS\",\"version\":1},\"userdoc\":{\"events\":{\"Attested(address,address,bytes32,bytes32)\":{\"notice\":\"Emitted when an attestation has been made.\"},\"NonceIncreased(uint256,uint256)\":{\"notice\":\"Emitted when users invalidate nonces by increasing their nonces to (higher) new values.\"},\"Revoked(address,address,bytes32,bytes32)\":{\"notice\":\"Emitted when an attestation has been revoked.\"},\"RevokedOffchain(address,bytes32,uint64)\":{\"notice\":\"Emitted when a data has been revoked.\"},\"Timestamped(bytes32,uint64)\":{\"notice\":\"Emitted when a data has been timestamped.\"}},\"kind\":\"user\",\"methods\":{\"attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))\":{\"notice\":\"Attests to a specific schema.\"},\"attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"notice\":\"Attests to a specific schema via the provided ECDSA signature.\"},\"getAttestTypeHash()\":{\"notice\":\"Returns the EIP712 type hash for the attest function.\"},\"getAttestation(bytes32)\":{\"notice\":\"Returns an existing attestation by UID.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator used in the encoding of the signatures for attest, and revoke.\"},\"getName()\":{\"notice\":\"Returns the EIP712 name.\"},\"getNonce(address)\":{\"notice\":\"Returns the current nonce per-account.\"},\"getRevokeOffchain(address,bytes32)\":{\"notice\":\"Returns the timestamp that the specified data was timestamped with.\"},\"getRevokeTypeHash()\":{\"notice\":\"Returns the EIP712 type hash for the revoke function.\"},\"getSchemaRegistry()\":{\"notice\":\"Returns the address of the global schema registry.\"},\"getTimestamp(bytes32)\":{\"notice\":\"Returns the timestamp that the specified data was timestamped with.\"},\"increaseNonce(uint256)\":{\"notice\":\"Provides users an option to invalidate nonces by increasing their nonces to (higher) new values.\"},\"isAttestationValid(bytes32)\":{\"notice\":\"Checks whether an attestation exists.\"},\"multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])\":{\"notice\":\"Attests to multiple schemas.\"},\"multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"notice\":\"Attests to multiple schemas using via provided ECDSA signatures.\"},\"multiRevoke((bytes32,(bytes32,uint256)[])[])\":{\"notice\":\"Revokes existing attestations to multiple schemas.\"},\"multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"notice\":\"Revokes existing attestations to multiple schemas via provided ECDSA signatures.\"},\"multiRevokeOffchain(bytes32[])\":{\"notice\":\"Revokes the specified multiple bytes32 data.\"},\"multiTimestamp(bytes32[])\":{\"notice\":\"Timestamps the specified multiple bytes32 data.\"},\"revoke((bytes32,(bytes32,uint256)))\":{\"notice\":\"Revokes an existing attestation to a specific schema.\"},\"revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"notice\":\"Revokes an existing attestation to a specific schema via the provided ECDSA signature.\"},\"revokeOffchain(bytes32)\":{\"notice\":\"Revokes the specified bytes32 data.\"},\"timestamp(bytes32)\":{\"notice\":\"Timestamps the specified bytes32 data.\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"notice\":\"The Ethereum Attestation Service protocol.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ethereum-attestation-service/eas-contracts/contracts/EAS.sol\":\"EAS\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/Common.sol\":{\"keccak256\":\"0x957bd2e6d0d6d637f86208b135c29fbaf4412cb08e5e7a61ede16b80561bf685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da1dc9aedbb1d4d39c46c2235918d3adfbc5741dd34a46010cf425d134e7936d\",\"dweb:/ipfs/QmWUk6bXnLaghS2riF3GTFEeURCzgYFMA5woa6AsgPwEgc\"]},\"@ethereum-attestation-service/eas-contracts/contracts/EAS.sol\":{\"keccak256\":\"0x60d59e039e6ec40887e8a946f516b55997d689212c44a89f434119535dd9a3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5234ba00beaf7a43005c0759e883c6878eecc4d0efeb42c10be8c9e8b17ba21\",\"dweb:/ipfs/QmPdUaubX2Yr9kMSyyYxkY3ueHiGzPfqTq5ubzbmQiQA6B\"]},\"@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol\":{\"keccak256\":\"0xdad0674defce04905dc7935f2756d6c477a6e876c0b1b7094b112a862f164c12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49e448c26c08952df034692d2ab3519dd40a1ebbeae4ce68b294567441933880\",\"dweb:/ipfs/QmWHcudjskUSCjgqsNWE65LVfWvcYB2vBn8RB1SmzvRLNR\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol\":{\"keccak256\":\"0xea97dcd36a0c422169cbaac06698249e199049b627c16bff93fb8ab829058754\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d453a929ef64a69cd31195ec2ee5ed1193bfa29f633e13c960e92154c37ad158\",\"dweb:/ipfs/QmXs1Z3njbHs2EMgHonrZDfcwdog4kozHY5tYNrhZK5yqz\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/Semver.sol\":{\"keccak256\":\"0x4f23442d048661b6aaa188ddc16b69cb310c2e44066b3852026afcb4201d61a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c36e580cd93d9acb13e1a11e833946a8bd0bd2a8d1b2be049f0d96e0989808\",\"dweb:/ipfs/QmXmQTxKjSrUWutafQsqkbGufXqtzxuDAiMMJjXCHXiEqh\"]},\"@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol\":{\"keccak256\":\"0x590977110db1256cc00416bdf74eb8264a0eda358ccded303610369a2930b614\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef015b3bee8859e6658c0eac6471d05f2991a5f4b6b5c2aa5571bbdab622d6e9\",\"dweb:/ipfs/QmUHriGkixE62c5qWjyM9DWZFykDcjQ7T6Tbfi3DPD38ym\"]},\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":{\"keccak256\":\"0xb7d1961ed928c620cddf35c2bf46845b10828bc5d73145214630202ed355b6bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf1cabacfb15c9bace8280b540b52e5aa440e1b4eba675f9782c34ce0f03902f\",\"dweb:/ipfs/QmakYcK4xbrijzvoaBCmBJK6HeaBqbXxWKtDQ1z62aXwCR\"]},\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04\",\"dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"@openzeppelin/contracts/interfaces/IERC7913.sol\":{\"keccak256\":\"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5\",\"dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0x1613f93e376ab96791fd29f79da754e253c3d766831bc8c42f50545662f49065\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e88ee314d50d0f323616f88d0ccf5e4110dbdec2775d8d42523bcc8b76ed36eb\",\"dweb:/ipfs/QmQ18ygHRrDdz4AEZXy5PASUHvJk1SNWWKM3TyC1xvDedP\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746\",\"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x0f39d23ae345355f0913470b15d00c0434754302077ac97cdc038b5c000fc5cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5ebc3233ff506c43e0f9960d2459403f878bbb63b7c71c318f16839564919ac\",\"dweb:/ipfs/QmbctngFd6aQkHVqZeFAL3iHfw4X7wNgfsgUxX8t26U2m4\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol": {
        "IEAS": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "attester",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "schemaUID",
                  "type": "bytes32"
                }
              ],
              "name": "Attested",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "attester",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "schemaUID",
                  "type": "bytes32"
                }
              ],
              "name": "Revoked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "revoker",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint64",
                  "name": "timestamp",
                  "type": "uint64"
                }
              ],
              "name": "RevokedOffchain",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint64",
                  "name": "timestamp",
                  "type": "uint64"
                }
              ],
              "name": "Timestamped",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData",
                      "name": "data",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct AttestationRequest",
                  "name": "request",
                  "type": "tuple"
                }
              ],
              "name": "attest",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData",
                      "name": "data",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature",
                      "name": "signature",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct DelegatedAttestationRequest",
                  "name": "delegatedRequest",
                  "type": "tuple"
                }
              ],
              "name": "attestByDelegation",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "getAttestation",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint64",
                      "name": "time",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "expirationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "revocationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "refUID",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "recipient",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Attestation",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "revoker",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "getRevokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSchemaRegistry",
              "outputs": [
                {
                  "internalType": "contract ISchemaRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "getTimestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "isAttestationValid",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct MultiAttestationRequest[]",
                  "name": "multiRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiAttest",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "",
                  "type": "bytes32[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature[]",
                      "name": "signatures",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MultiDelegatedAttestationRequest[]",
                  "name": "multiDelegatedRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiAttestByDelegation",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "",
                  "type": "bytes32[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct MultiRevocationRequest[]",
                  "name": "multiRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiRevoke",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature[]",
                      "name": "signatures",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "address",
                      "name": "revoker",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MultiDelegatedRevocationRequest[]",
                  "name": "multiDelegatedRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiRevokeByDelegation",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "data",
                  "type": "bytes32[]"
                }
              ],
              "name": "multiRevokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "data",
                  "type": "bytes32[]"
                }
              ],
              "name": "multiTimestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData",
                      "name": "data",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct RevocationRequest",
                  "name": "request",
                  "type": "tuple"
                }
              ],
              "name": "revoke",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData",
                      "name": "data",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature",
                      "name": "signature",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "revoker",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct DelegatedRevocationRequest",
                  "name": "delegatedRequest",
                  "type": "tuple"
                }
              ],
              "name": "revokeByDelegation",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "revokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "timestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))": "f17325e7",
              "attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))": "3c042715",
              "getAttestation(bytes32)": "a3112a64",
              "getRevokeOffchain(address,bytes32)": "b469318d",
              "getSchemaRegistry()": "f10b5cc8",
              "getTimestamp(bytes32)": "d45c4435",
              "isAttestationValid(bytes32)": "e30bb563",
              "multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])": "44adc90e",
              "multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])": "95411525",
              "multiRevoke((bytes32,(bytes32,uint256)[])[])": "4cb7e9e5",
              "multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])": "0eabf660",
              "multiRevokeOffchain(bytes32[])": "13893f61",
              "multiTimestamp(bytes32[])": "e71ff365",
              "revoke((bytes32,(bytes32,uint256)))": "46926267",
              "revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))": "a6d4dbc7",
              "revokeOffchain(bytes32)": "cf190f34",
              "timestamp(bytes32)": "4d003070",
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"schemaUID\",\"type\":\"bytes32\"}],\"name\":\"Attested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"schemaUID\",\"type\":\"bytes32\"}],\"name\":\"Revoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"RevokedOffchain\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"Timestamped\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct AttestationRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"attest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature\",\"name\":\"signature\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct DelegatedAttestationRequest\",\"name\":\"delegatedRequest\",\"type\":\"tuple\"}],\"name\":\"attestByDelegation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"getAttestation\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"time\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revocationTime\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Attestation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"getRevokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSchemaRegistry\",\"outputs\":[{\"internalType\":\"contract ISchemaRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"isAttestationValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"internalType\":\"struct MultiAttestationRequest[]\",\"name\":\"multiRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiAttest\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct MultiDelegatedAttestationRequest[]\",\"name\":\"multiDelegatedRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiAttestByDelegation\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"internalType\":\"struct MultiRevocationRequest[]\",\"name\":\"multiRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiRevoke\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct MultiDelegatedRevocationRequest[]\",\"name\":\"multiDelegatedRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiRevokeByDelegation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"multiRevokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"multiTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct RevocationRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"revoke\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature\",\"name\":\"signature\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct DelegatedRevocationRequest\",\"name\":\"delegatedRequest\",\"type\":\"tuple\"}],\"name\":\"revokeByDelegation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"revokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"timestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Attested(address,address,bytes32,bytes32)\":{\"params\":{\"attester\":\"The attesting account.\",\"recipient\":\"The recipient of the attestation.\",\"schemaUID\":\"The UID of the schema.\",\"uid\":\"The UID of the new attestation.\"}},\"Revoked(address,address,bytes32,bytes32)\":{\"params\":{\"attester\":\"The attesting account.\",\"recipient\":\"The recipient of the attestation.\",\"schemaUID\":\"The UID of the schema.\",\"uid\":\"The UID the revoked attestation.\"}},\"RevokedOffchain(address,bytes32,uint64)\":{\"params\":{\"data\":\"The data.\",\"revoker\":\"The address of the revoker.\",\"timestamp\":\"The timestamp.\"}},\"Timestamped(bytes32,uint64)\":{\"params\":{\"data\":\"The data.\",\"timestamp\":\"The timestamp.\"}}},\"kind\":\"dev\",\"methods\":{\"attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))\":{\"params\":{\"request\":\"The arguments of the attestation request.\"},\"returns\":{\"_0\":\"The UID of the new attestation. Example:     attest({         schema: \\\"0facc36681cbe2456019c1b0d1e7bedd6d1d40f6f324bf3dd3a4cef2999200a0\\\",         data: {             recipient: \\\"0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf\\\",             expirationTime: 0,             revocable: true,             refUID: \\\"0x0000000000000000000000000000000000000000000000000000000000000000\\\",             data: \\\"0xF00D\\\",             value: 0         }     })\"}},\"attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"params\":{\"delegatedRequest\":\"The arguments of the delegated attestation request.\"},\"returns\":{\"_0\":\"The UID of the new attestation. Example:     attestByDelegation({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 0         },         signature: {             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         attester: '0xc5E8740aD971409492b1A63Db8d83025e0Fc427e',         deadline: 1673891048     })\"}},\"getAttestation(bytes32)\":{\"params\":{\"uid\":\"The UID of the attestation to retrieve.\"},\"returns\":{\"_0\":\"The attestation data members.\"}},\"getRevokeOffchain(address,bytes32)\":{\"params\":{\"data\":\"The data to query.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"getSchemaRegistry()\":{\"returns\":{\"_0\":\"The address of the global schema registry.\"}},\"getTimestamp(bytes32)\":{\"params\":{\"data\":\"The data to query.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"isAttestationValid(bytes32)\":{\"params\":{\"uid\":\"The UID of the attestation to retrieve.\"},\"returns\":{\"_0\":\"Whether an attestation exists.\"}},\"multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])\":{\"params\":{\"multiRequests\":\"The arguments of the multi attestation requests. The requests should be grouped by distinct     schema ids to benefit from the best batching optimization.\"},\"returns\":{\"_0\":\"The UIDs of the new attestations. Example:     multiAttest([{         schema: '0x33e9094830a5cba5554d1954310e4fbed2ef5f859ec1404619adea4207f391fd',         data: [{             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 1000         },         {             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 0,             revocable: false,             refUID: '0x480df4a039efc31b11bfdf491b383ca138b6bde160988222a2a3509c02cee174',             data: '0x00',             value: 0         }],     },     {         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',         data: [{             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 0,             revocable: true,             refUID: '0x75bf2ed8dca25a8190c50c52db136664de25b2449535839008ccfdab469b214f',             data: '0x12345678',             value: 0         },     }])\"}},\"multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"params\":{\"multiDelegatedRequests\":\"The arguments of the delegated multi attestation requests. The requests should be     grouped by distinct schema ids to benefit from the best batching optimization.\"},\"returns\":{\"_0\":\"The UIDs of the new attestations. Example:     multiAttestByDelegation([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 0         },         {             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 0,             revocable: false,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x00',             value: 0         }],         signatures: [{             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         {             v: 28,             r: '0x487s...67bb',             s: '0x12ad...2366'         }],         attester: '0x1D86495b2A7B524D747d2839b3C645Bed32e8CF4',         deadline: 1673891048     }])\"}},\"multiRevoke((bytes32,(bytes32,uint256)[])[])\":{\"params\":{\"multiRequests\":\"The arguments of the multi revocation requests. The requests should be grouped by distinct     schema ids to benefit from the best batching optimization. Example:     multiRevoke([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',             value: 1000         },         {             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',             value: 0         }],     },     {         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',         data: [{             uid: '0x053d42abce1fd7c8fcddfae21845ad34dae287b2c326220b03ba241bc5a8f019',             value: 0         },     }])\"}},\"multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"params\":{\"multiDelegatedRequests\":\"The arguments of the delegated multi revocation attestation requests. The requests     should be grouped by distinct schema ids to benefit from the best batching optimization. Example:     multiRevokeByDelegation([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',             value: 1000         },         {             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',             value: 0         }],         signatures: [{             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         {             v: 28,             r: '0x487s...67bb',             s: '0x12ad...2366'         }],         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',         deadline: 1673891048     }])\"}},\"multiRevokeOffchain(bytes32[])\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was revoked with.\"}},\"multiTimestamp(bytes32[])\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"revoke((bytes32,(bytes32,uint256)))\":{\"params\":{\"request\":\"The arguments of the revocation request. Example:     revoke({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             uid: '0x101032e487642ee04ee17049f99a70590c735b8614079fc9275f9dd57c00966d',             value: 0         }     })\"}},\"revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"params\":{\"delegatedRequest\":\"The arguments of the delegated revocation request. Example:     revokeByDelegation({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             uid: '0xcbbc12102578c642a0f7b34fe7111e41afa25683b6cd7b5a14caf90fa14d24ba',             value: 0         },         signature: {             v: 27,             r: '0xb593...7142',             s: '0x0f5b...2cce'         },         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',         deadline: 1673891048     })\"}},\"revokeOffchain(bytes32)\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was revoked with.\"}},\"timestamp(bytes32)\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"title\":\"IEAS\",\"version\":1},\"userdoc\":{\"events\":{\"Attested(address,address,bytes32,bytes32)\":{\"notice\":\"Emitted when an attestation has been made.\"},\"Revoked(address,address,bytes32,bytes32)\":{\"notice\":\"Emitted when an attestation has been revoked.\"},\"RevokedOffchain(address,bytes32,uint64)\":{\"notice\":\"Emitted when a data has been revoked.\"},\"Timestamped(bytes32,uint64)\":{\"notice\":\"Emitted when a data has been timestamped.\"}},\"kind\":\"user\",\"methods\":{\"attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))\":{\"notice\":\"Attests to a specific schema.\"},\"attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"notice\":\"Attests to a specific schema via the provided ECDSA signature.\"},\"getAttestation(bytes32)\":{\"notice\":\"Returns an existing attestation by UID.\"},\"getRevokeOffchain(address,bytes32)\":{\"notice\":\"Returns the timestamp that the specified data was timestamped with.\"},\"getSchemaRegistry()\":{\"notice\":\"Returns the address of the global schema registry.\"},\"getTimestamp(bytes32)\":{\"notice\":\"Returns the timestamp that the specified data was timestamped with.\"},\"isAttestationValid(bytes32)\":{\"notice\":\"Checks whether an attestation exists.\"},\"multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])\":{\"notice\":\"Attests to multiple schemas.\"},\"multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"notice\":\"Attests to multiple schemas using via provided ECDSA signatures.\"},\"multiRevoke((bytes32,(bytes32,uint256)[])[])\":{\"notice\":\"Revokes existing attestations to multiple schemas.\"},\"multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"notice\":\"Revokes existing attestations to multiple schemas via provided ECDSA signatures.\"},\"multiRevokeOffchain(bytes32[])\":{\"notice\":\"Revokes the specified multiple bytes32 data.\"},\"multiTimestamp(bytes32[])\":{\"notice\":\"Timestamps the specified multiple bytes32 data.\"},\"revoke((bytes32,(bytes32,uint256)))\":{\"notice\":\"Revokes an existing attestation to a specific schema.\"},\"revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"notice\":\"Revokes an existing attestation to a specific schema via the provided ECDSA signature.\"},\"revokeOffchain(bytes32)\":{\"notice\":\"Revokes the specified bytes32 data.\"},\"timestamp(bytes32)\":{\"notice\":\"Timestamps the specified bytes32 data.\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"notice\":\"EAS - Ethereum Attestation Service interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol\":\"IEAS\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/Common.sol\":{\"keccak256\":\"0x957bd2e6d0d6d637f86208b135c29fbaf4412cb08e5e7a61ede16b80561bf685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da1dc9aedbb1d4d39c46c2235918d3adfbc5741dd34a46010cf425d134e7936d\",\"dweb:/ipfs/QmWUk6bXnLaghS2riF3GTFEeURCzgYFMA5woa6AsgPwEgc\"]},\"@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol\":{\"keccak256\":\"0xdad0674defce04905dc7935f2756d6c477a6e876c0b1b7094b112a862f164c12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49e448c26c08952df034692d2ab3519dd40a1ebbeae4ce68b294567441933880\",\"dweb:/ipfs/QmWHcudjskUSCjgqsNWE65LVfWvcYB2vBn8RB1SmzvRLNR\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol\":{\"keccak256\":\"0xea97dcd36a0c422169cbaac06698249e199049b627c16bff93fb8ab829058754\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d453a929ef64a69cd31195ec2ee5ed1193bfa29f633e13c960e92154c37ad158\",\"dweb:/ipfs/QmXs1Z3njbHs2EMgHonrZDfcwdog4kozHY5tYNrhZK5yqz\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":{\"keccak256\":\"0xb7d1961ed928c620cddf35c2bf46845b10828bc5d73145214630202ed355b6bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf1cabacfb15c9bace8280b540b52e5aa440e1b4eba675f9782c34ce0f03902f\",\"dweb:/ipfs/QmakYcK4xbrijzvoaBCmBJK6HeaBqbXxWKtDQ1z62aXwCR\"]}},\"version\":1}"
        }
      },
      "@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol": {
        "ISchemaRegistry": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "registerer",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "contract ISchemaResolver",
                      "name": "resolver",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "string",
                      "name": "schema",
                      "type": "string"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SchemaRecord",
                  "name": "schema",
                  "type": "tuple"
                }
              ],
              "name": "Registered",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "getSchema",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "contract ISchemaResolver",
                      "name": "resolver",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "string",
                      "name": "schema",
                      "type": "string"
                    }
                  ],
                  "internalType": "struct SchemaRecord",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "schema",
                  "type": "string"
                },
                {
                  "internalType": "contract ISchemaResolver",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "revocable",
                  "type": "bool"
                }
              ],
              "name": "register",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getSchema(bytes32)": "a2ea7c6e",
              "register(string,address,bool)": "60d7a278",
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"registerer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"struct SchemaRecord\",\"name\":\"schema\",\"type\":\"tuple\"}],\"name\":\"Registered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"getSchema\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"}],\"internalType\":\"struct SchemaRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"}],\"name\":\"register\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Registered(bytes32,address,(bytes32,address,bool,string))\":{\"params\":{\"registerer\":\"The address of the account used to register the schema.\",\"schema\":\"The schema data.\",\"uid\":\"The schema UID.\"}}},\"kind\":\"dev\",\"methods\":{\"getSchema(bytes32)\":{\"params\":{\"uid\":\"The UID of the schema to retrieve.\"},\"returns\":{\"_0\":\"The schema data members.\"}},\"register(string,address,bool)\":{\"params\":{\"resolver\":\"An optional schema resolver.\",\"revocable\":\"Whether the schema allows revocations explicitly.\",\"schema\":\"The schema data schema.\"},\"returns\":{\"_0\":\"The UID of the new schema.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"title\":\"ISchemaRegistry\",\"version\":1},\"userdoc\":{\"events\":{\"Registered(bytes32,address,(bytes32,address,bool,string))\":{\"notice\":\"Emitted when a new schema has been registered\"}},\"kind\":\"user\",\"methods\":{\"getSchema(bytes32)\":{\"notice\":\"Returns an existing schema by UID\"},\"register(string,address,bool)\":{\"notice\":\"Submits and reserves a new schema\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"notice\":\"The interface of global attestation schemas for the Ethereum Attestation Service protocol.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol\":\"ISchemaRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/Common.sol\":{\"keccak256\":\"0x957bd2e6d0d6d637f86208b135c29fbaf4412cb08e5e7a61ede16b80561bf685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da1dc9aedbb1d4d39c46c2235918d3adfbc5741dd34a46010cf425d134e7936d\",\"dweb:/ipfs/QmWUk6bXnLaghS2riF3GTFEeURCzgYFMA5woa6AsgPwEgc\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol\":{\"keccak256\":\"0xea97dcd36a0c422169cbaac06698249e199049b627c16bff93fb8ab829058754\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d453a929ef64a69cd31195ec2ee5ed1193bfa29f633e13c960e92154c37ad158\",\"dweb:/ipfs/QmXs1Z3njbHs2EMgHonrZDfcwdog4kozHY5tYNrhZK5yqz\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":{\"keccak256\":\"0xb7d1961ed928c620cddf35c2bf46845b10828bc5d73145214630202ed355b6bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf1cabacfb15c9bace8280b540b52e5aa440e1b4eba675f9782c34ce0f03902f\",\"dweb:/ipfs/QmakYcK4xbrijzvoaBCmBJK6HeaBqbXxWKtDQ1z62aXwCR\"]}},\"version\":1}"
        }
      },
      "@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol": {
        "ISemver": {
          "abi": [
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"title\":\"ISemver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"notice\":\"A semver interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":\"ISemver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]}},\"version\":1}"
        }
      },
      "@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol": {
        "SchemaRegistry": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "AlreadyExists",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "registerer",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "contract ISchemaResolver",
                      "name": "resolver",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "string",
                      "name": "schema",
                      "type": "string"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SchemaRecord",
                  "name": "schema",
                  "type": "tuple"
                }
              ],
              "name": "Registered",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "getSchema",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "contract ISchemaResolver",
                      "name": "resolver",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "string",
                      "name": "schema",
                      "type": "string"
                    }
                  ],
                  "internalType": "struct SchemaRecord",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "schema",
                  "type": "string"
                },
                {
                  "internalType": "contract ISchemaResolver",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "revocable",
                  "type": "bool"
                }
              ],
              "name": "register",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e08060405234603e576001608052600360a0525f60c0526107d29081610043823960805181610458015260a05181610483015260c051816104ae0152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806354fd4d501461043957806360d7a278146101625763a2ea7c6e1461003a575f80fd5b3461015e57602036600319011261015e5760608060405161005a8161059d565b5f81525f60208201525f604082015201526004355f525f60205260405f206002604051916100878361059d565b8054835260ff600182015460018060a01b038116602086015260a01c161515604084015201906040515f928054906100be826105f7565b808452916001811690811561013657506001146100fc575b50506100e7816100f89403826105b9565b60608201526040519182918261055b565b0390f35b9093505f5260205f205f905b8482106101205750810160200192506100e7816100d6565b6001816020925483858701015201910190610108565b6100f8965084925060209150926100e79360ff191682840152151560051b82010194506100d6565b5f80fd5b3461015e57606036600319011261015e5760043567ffffffffffffffff811161015e573660238201121561015e57806004013567ffffffffffffffff811161015e57366024828401011161015e576024356001600160a01b038116919082900361015e576044359182151580930361015e57604051916101e18361059d565b5f835260208301918252604083019384525f60206101fe836105db565b9261020c60405194856105b9565b80845280602483860199018937830101526060830194818652610275601560208551938851151594604051958692848401985180918a5e8301916bffffffffffffffffffffffff199060601b168483015260f81b60348201520301600a198101845201826105b9565b51902092835f525f60205260405f205461042a57600291848452845f525f60205260405f209184518355600183019160018060a01b0390511682549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b161717905501925192835167ffffffffffffffff8111610416576102f282546105f7565b601f81116103d1575b50806020958690601f831160011461036f575f92610364575b50508160011b915f199060031b1c19161790555b817fd0b86852e21f9e5fa4bc3b0cff9757ffe243d50c4b43968a42202153d651ea5e6040518061035933958261055b565b0390a3604051908152f35b015190508680610314565b5f8581528281209350601f198516905b8181106103ba57509084600195949392106103a2575b505050811b019055610328565b01515f1960f88460031b161c19169055868080610395565b92938960018192878601518155019501930161037f565b825f5260205f20601f830160051c8101916020841061040c575b601f0160051c01905b81811061040157506102fb565b5f81556001016103f4565b90915081906103eb565b634e487b7160e01b5f52604160045260245ffd5b63119b4fd360e11b5f5260045ffd5b3461015e575f36600319011261015e576100f86020610527600161047c7f000000000000000000000000000000000000000000000000000000000000000061062f565b81846104a77f000000000000000000000000000000000000000000000000000000000000000061062f565b81806104d27f000000000000000000000000000000000000000000000000000000000000000061062f565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826105b9565b6040519182916020835260208301905b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a0606061059a936020845280516020850152600180841b03602082015116604085015260408101511515828501520151916080808201520190610537565b90565b6080810190811067ffffffffffffffff82111761041657604052565b90601f8019910116810190811067ffffffffffffffff82111761041657604052565b67ffffffffffffffff811161041657601f01601f191660200190565b90600182811c92168015610625575b602083101461061157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610606565b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b821015610779575b806d04ee2d6d415b85acef8100000000600a92101561075e575b662386f26fc1000081101561074a575b6305f5e100811015610739575b61271081101561072a575b606481101561071c575b1015610711575b600a602160018401936106b6856105db565b946106c460405196876105b9565b8086526106d3601f19916105db565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304801561070c57600a90916106de565b505090565b6001909101906106a4565b60646002910493019261069d565b61271060049104930192610693565b6305f5e10060089104930192610688565b662386f26fc100006010910493019261067b565b6d04ee2d6d415b85acef81000000006020910493019261066b565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b810461065156fea2646970667358221220877847e82b4a993b6b1d2b3b2cd5d6050ef9b880d6f70ddae5d057c462abd34a64736f6c634300081b0033",
              "opcodes": "PUSH1 0xE0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x3E JUMPI PUSH1 0x1 PUSH1 0x80 MSTORE PUSH1 0x3 PUSH1 0xA0 MSTORE PUSH0 PUSH1 0xC0 MSTORE PUSH2 0x7D2 SWAP1 DUP2 PUSH2 0x43 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x458 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x483 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0x4AE ADD MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0x60D7A278 EQ PUSH2 0x162 JUMPI PUSH4 0xA2EA7C6E EQ PUSH2 0x3A JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD PUSH2 0x5A DUP2 PUSH2 0x59D JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x87 DUP4 PUSH2 0x59D JUMP JUMPDEST DUP1 SLOAD DUP4 MSTORE PUSH1 0xFF PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 SHR AND ISZERO ISZERO PUSH1 0x40 DUP5 ADD MSTORE ADD SWAP1 PUSH1 0x40 MLOAD PUSH0 SWAP3 DUP1 SLOAD SWAP1 PUSH2 0xBE DUP3 PUSH2 0x5F7 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x136 JUMPI POP PUSH1 0x1 EQ PUSH2 0xFC JUMPI JUMPDEST POP POP PUSH2 0xE7 DUP2 PUSH2 0xF8 SWAP5 SUB DUP3 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP4 POP PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH0 SWAP1 JUMPDEST DUP5 DUP3 LT PUSH2 0x120 JUMPI POP DUP2 ADD PUSH1 0x20 ADD SWAP3 POP PUSH2 0xE7 DUP2 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x108 JUMP JUMPDEST PUSH2 0xF8 SWAP7 POP DUP5 SWAP3 POP PUSH1 0x20 SWAP2 POP SWAP3 PUSH2 0xE7 SWAP4 PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP5 POP PUSH2 0xD6 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15E JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x15E JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15E JUMPI CALLDATASIZE PUSH1 0x24 DUP3 DUP5 ADD ADD GT PUSH2 0x15E JUMPI PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 SWAP1 DUP3 SWAP1 SUB PUSH2 0x15E JUMPI PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x15E JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1E1 DUP4 PUSH2 0x59D JUMP JUMPDEST PUSH0 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP4 DUP5 MSTORE PUSH0 PUSH1 0x20 PUSH2 0x1FE DUP4 PUSH2 0x5DB JUMP JUMPDEST SWAP3 PUSH2 0x20C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x5B9 JUMP JUMPDEST DUP1 DUP5 MSTORE DUP1 PUSH1 0x24 DUP4 DUP7 ADD SWAP10 ADD DUP10 CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP5 DUP2 DUP7 MSTORE PUSH2 0x275 PUSH1 0x15 PUSH1 0x20 DUP6 MLOAD SWAP4 DUP9 MLOAD ISZERO ISZERO SWAP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP3 DUP5 DUP5 ADD SWAP9 MLOAD DUP1 SWAP2 DUP11 MCOPY DUP4 ADD SWAP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 PUSH1 0x60 SHL AND DUP5 DUP4 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x34 DUP3 ADD MSTORE SUB ADD PUSH1 0xA NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x5B9 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 DUP4 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x42A JUMPI PUSH1 0x2 SWAP2 DUP5 DUP5 MSTORE DUP5 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP5 MLOAD DUP4 SSTORE PUSH1 0x1 DUP4 ADD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND DUP3 SLOAD SWAP2 PUSH1 0xFF PUSH1 0xA0 SHL SWAP1 MLOAD ISZERO ISZERO PUSH1 0xA0 SHL AND SWAP2 PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA8 SHL AND OR OR SWAP1 SSTORE ADD SWAP3 MLOAD SWAP3 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x416 JUMPI PUSH2 0x2F2 DUP3 SLOAD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x3D1 JUMPI JUMPDEST POP DUP1 PUSH1 0x20 SWAP6 DUP7 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x36F JUMPI PUSH0 SWAP3 PUSH2 0x364 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST DUP2 PUSH32 0xD0B86852E21F9E5FA4BC3B0CFF9757FFE243D50C4B43968A42202153D651EA5E PUSH1 0x40 MLOAD DUP1 PUSH2 0x359 CALLER SWAP6 DUP3 PUSH2 0x55B JUMP JUMPDEST SUB SWAP1 LOG3 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST ADD MLOAD SWAP1 POP DUP7 DUP1 PUSH2 0x314 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP4 POP PUSH1 0x1F NOT DUP6 AND SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x3BA JUMPI POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x3A2 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x328 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP7 DUP1 DUP1 PUSH2 0x395 JUMP JUMPDEST SWAP3 SWAP4 DUP10 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x37F JUMP JUMPDEST DUP3 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x40C JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x401 JUMPI POP PUSH2 0x2FB JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3F4 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x3EB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x119B4FD3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH2 0xF8 PUSH1 0x20 PUSH2 0x527 PUSH1 0x1 PUSH2 0x47C PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST DUP2 DUP5 PUSH2 0x4A7 PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST DUP2 DUP1 PUSH2 0x4D2 PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP10 DUP8 DUP12 SWAP9 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP11 ADD MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x60 PUSH2 0x59A SWAP4 PUSH1 0x20 DUP5 MSTORE DUP1 MLOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 DUP1 DUP5 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH1 0x80 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x537 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x416 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x416 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x416 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x625 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x611 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x606 JUMP JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x779 JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x75E JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x74A JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x739 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x72A JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x71C JUMPI JUMPDEST LT ISZERO PUSH2 0x711 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x6B6 DUP6 PUSH2 0x5DB JUMP JUMPDEST SWAP5 PUSH2 0x6C4 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x5B9 JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x6D3 PUSH1 0x1F NOT SWAP2 PUSH2 0x5DB JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x70C JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x6DE JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x6A4 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x69D JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x693 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x688 JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x67B JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x66B JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x651 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 PUSH25 0x47E82B4A993B6B1D2B3B2CD5D6050EF9B880D6F70DDAE5D057 0xC4 PUSH3 0xABD34A PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "344:1436:5:-:0;;;;;;;640:1;759:14:6;;643:1:5;783:14:6;;646:1:5;807:14:6;;344:1436:5;;;;;;759:14:6;344:1436:5;;;;;783:14:6;344:1436:5;;;;;807:14:6;344:1436:5;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_encode_string": {
                  "entryPoint": 1335,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_struct_SchemaRecord": {
                  "entryPoint": 1371,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_allocation_size_string": {
                  "entryPoint": 1499,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 1527,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 1465,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "finalize_allocation_5816": {
                  "entryPoint": 1437,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_toString": {
                  "entryPoint": 1583,
                  "id": 4057,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [],
              "immutableReferences": {
                "2532": [
                  {
                    "length": 32,
                    "start": 1112
                  }
                ],
                "2534": [
                  {
                    "length": 32,
                    "start": 1155
                  }
                ],
                "2536": [
                  {
                    "length": 32,
                    "start": 1198
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361015610011575f80fd5b5f3560e01c806354fd4d501461043957806360d7a278146101625763a2ea7c6e1461003a575f80fd5b3461015e57602036600319011261015e5760608060405161005a8161059d565b5f81525f60208201525f604082015201526004355f525f60205260405f206002604051916100878361059d565b8054835260ff600182015460018060a01b038116602086015260a01c161515604084015201906040515f928054906100be826105f7565b808452916001811690811561013657506001146100fc575b50506100e7816100f89403826105b9565b60608201526040519182918261055b565b0390f35b9093505f5260205f205f905b8482106101205750810160200192506100e7816100d6565b6001816020925483858701015201910190610108565b6100f8965084925060209150926100e79360ff191682840152151560051b82010194506100d6565b5f80fd5b3461015e57606036600319011261015e5760043567ffffffffffffffff811161015e573660238201121561015e57806004013567ffffffffffffffff811161015e57366024828401011161015e576024356001600160a01b038116919082900361015e576044359182151580930361015e57604051916101e18361059d565b5f835260208301918252604083019384525f60206101fe836105db565b9261020c60405194856105b9565b80845280602483860199018937830101526060830194818652610275601560208551938851151594604051958692848401985180918a5e8301916bffffffffffffffffffffffff199060601b168483015260f81b60348201520301600a198101845201826105b9565b51902092835f525f60205260405f205461042a57600291848452845f525f60205260405f209184518355600183019160018060a01b0390511682549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b161717905501925192835167ffffffffffffffff8111610416576102f282546105f7565b601f81116103d1575b50806020958690601f831160011461036f575f92610364575b50508160011b915f199060031b1c19161790555b817fd0b86852e21f9e5fa4bc3b0cff9757ffe243d50c4b43968a42202153d651ea5e6040518061035933958261055b565b0390a3604051908152f35b015190508680610314565b5f8581528281209350601f198516905b8181106103ba57509084600195949392106103a2575b505050811b019055610328565b01515f1960f88460031b161c19169055868080610395565b92938960018192878601518155019501930161037f565b825f5260205f20601f830160051c8101916020841061040c575b601f0160051c01905b81811061040157506102fb565b5f81556001016103f4565b90915081906103eb565b634e487b7160e01b5f52604160045260245ffd5b63119b4fd360e11b5f5260045ffd5b3461015e575f36600319011261015e576100f86020610527600161047c7f000000000000000000000000000000000000000000000000000000000000000061062f565b81846104a77f000000000000000000000000000000000000000000000000000000000000000061062f565b81806104d27f000000000000000000000000000000000000000000000000000000000000000061062f565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826105b9565b6040519182916020835260208301905b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a0606061059a936020845280516020850152600180841b03602082015116604085015260408101511515828501520151916080808201520190610537565b90565b6080810190811067ffffffffffffffff82111761041657604052565b90601f8019910116810190811067ffffffffffffffff82111761041657604052565b67ffffffffffffffff811161041657601f01601f191660200190565b90600182811c92168015610625575b602083101461061157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610606565b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b821015610779575b806d04ee2d6d415b85acef8100000000600a92101561075e575b662386f26fc1000081101561074a575b6305f5e100811015610739575b61271081101561072a575b606481101561071c575b1015610711575b600a602160018401936106b6856105db565b946106c460405196876105b9565b8086526106d3601f19916105db565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304801561070c57600a90916106de565b505090565b6001909101906106a4565b60646002910493019261069d565b61271060049104930192610693565b6305f5e10060089104930192610688565b662386f26fc100006010910493019261067b565b6d04ee2d6d415b85acef81000000006020910493019261066b565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b810461065156fea2646970667358221220877847e82b4a993b6b1d2b3b2cd5d6050ef9b880d6f70ddae5d057c462abd34a64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0x60D7A278 EQ PUSH2 0x162 JUMPI PUSH4 0xA2EA7C6E EQ PUSH2 0x3A JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD PUSH2 0x5A DUP2 PUSH2 0x59D JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x87 DUP4 PUSH2 0x59D JUMP JUMPDEST DUP1 SLOAD DUP4 MSTORE PUSH1 0xFF PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 SHR AND ISZERO ISZERO PUSH1 0x40 DUP5 ADD MSTORE ADD SWAP1 PUSH1 0x40 MLOAD PUSH0 SWAP3 DUP1 SLOAD SWAP1 PUSH2 0xBE DUP3 PUSH2 0x5F7 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x136 JUMPI POP PUSH1 0x1 EQ PUSH2 0xFC JUMPI JUMPDEST POP POP PUSH2 0xE7 DUP2 PUSH2 0xF8 SWAP5 SUB DUP3 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP4 POP PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH0 SWAP1 JUMPDEST DUP5 DUP3 LT PUSH2 0x120 JUMPI POP DUP2 ADD PUSH1 0x20 ADD SWAP3 POP PUSH2 0xE7 DUP2 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x108 JUMP JUMPDEST PUSH2 0xF8 SWAP7 POP DUP5 SWAP3 POP PUSH1 0x20 SWAP2 POP SWAP3 PUSH2 0xE7 SWAP4 PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP5 POP PUSH2 0xD6 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15E JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x15E JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15E JUMPI CALLDATASIZE PUSH1 0x24 DUP3 DUP5 ADD ADD GT PUSH2 0x15E JUMPI PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 SWAP1 DUP3 SWAP1 SUB PUSH2 0x15E JUMPI PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x15E JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1E1 DUP4 PUSH2 0x59D JUMP JUMPDEST PUSH0 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP4 DUP5 MSTORE PUSH0 PUSH1 0x20 PUSH2 0x1FE DUP4 PUSH2 0x5DB JUMP JUMPDEST SWAP3 PUSH2 0x20C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x5B9 JUMP JUMPDEST DUP1 DUP5 MSTORE DUP1 PUSH1 0x24 DUP4 DUP7 ADD SWAP10 ADD DUP10 CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP5 DUP2 DUP7 MSTORE PUSH2 0x275 PUSH1 0x15 PUSH1 0x20 DUP6 MLOAD SWAP4 DUP9 MLOAD ISZERO ISZERO SWAP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP3 DUP5 DUP5 ADD SWAP9 MLOAD DUP1 SWAP2 DUP11 MCOPY DUP4 ADD SWAP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 PUSH1 0x60 SHL AND DUP5 DUP4 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x34 DUP3 ADD MSTORE SUB ADD PUSH1 0xA NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x5B9 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 DUP4 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x42A JUMPI PUSH1 0x2 SWAP2 DUP5 DUP5 MSTORE DUP5 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP5 MLOAD DUP4 SSTORE PUSH1 0x1 DUP4 ADD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND DUP3 SLOAD SWAP2 PUSH1 0xFF PUSH1 0xA0 SHL SWAP1 MLOAD ISZERO ISZERO PUSH1 0xA0 SHL AND SWAP2 PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA8 SHL AND OR OR SWAP1 SSTORE ADD SWAP3 MLOAD SWAP3 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x416 JUMPI PUSH2 0x2F2 DUP3 SLOAD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x3D1 JUMPI JUMPDEST POP DUP1 PUSH1 0x20 SWAP6 DUP7 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x36F JUMPI PUSH0 SWAP3 PUSH2 0x364 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST DUP2 PUSH32 0xD0B86852E21F9E5FA4BC3B0CFF9757FFE243D50C4B43968A42202153D651EA5E PUSH1 0x40 MLOAD DUP1 PUSH2 0x359 CALLER SWAP6 DUP3 PUSH2 0x55B JUMP JUMPDEST SUB SWAP1 LOG3 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST ADD MLOAD SWAP1 POP DUP7 DUP1 PUSH2 0x314 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP4 POP PUSH1 0x1F NOT DUP6 AND SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x3BA JUMPI POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x3A2 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x328 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP7 DUP1 DUP1 PUSH2 0x395 JUMP JUMPDEST SWAP3 SWAP4 DUP10 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x37F JUMP JUMPDEST DUP3 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x40C JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x401 JUMPI POP PUSH2 0x2FB JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3F4 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x3EB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x119B4FD3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH2 0xF8 PUSH1 0x20 PUSH2 0x527 PUSH1 0x1 PUSH2 0x47C PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST DUP2 DUP5 PUSH2 0x4A7 PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST DUP2 DUP1 PUSH2 0x4D2 PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP10 DUP8 DUP12 SWAP9 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP11 ADD MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x60 PUSH2 0x59A SWAP4 PUSH1 0x20 DUP5 MSTORE DUP1 MLOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 DUP1 DUP5 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH1 0x80 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x537 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x416 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x416 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x416 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x625 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x611 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x606 JUMP JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x779 JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x75E JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x74A JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x739 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x72A JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x71C JUMPI JUMPDEST LT ISZERO PUSH2 0x711 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x6B6 DUP6 PUSH2 0x5DB JUMP JUMPDEST SWAP5 PUSH2 0x6C4 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x5B9 JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x6D3 PUSH1 0x1F NOT SWAP2 PUSH2 0x5DB JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x70C JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x6DE JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x6A4 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x69D JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x693 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x688 JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x67B JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x66B JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x651 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP8 PUSH25 0x47E82B4A993B6B1D2B3B2CD5D6050EF9B880D6F70DDAE5D057 0xC4 PUSH3 0xABD34A PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "344:1436:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;344:1436:5;;;;;;;;138:1:0;;;:::i;:::-;344:1436:5;;;;;;;;;;;;;;;;;;138:1:0;344:1436:5;;138:1:0;344:1436:5;;138:1:0;344:1436:5;;;138:1:0;;;;:::i;:::-;;;;;344:1436:5;;;;;;;;;;;;;;;138:1:0;344:1436:5;;;;;;;;138:1:0;344:1436:5;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;138:1:0;344:1436:5;;;;;;;:::i;:::-;;;;;138:1:0;;;344:1436:5;138:1:0;344:1436:5;;138:1:0;344:1436:5;;;;;;;;-1:-1:-1;344:1436:5;;;;;-1:-1:-1;344:1436:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;138:1:0;344:1436:5;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;344:1436:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;344:1436:5;;;;;;;;;;;;;;;;;;;;;;138:1:0;;;;:::i;:::-;344:1436:5;138:1:0;;344:1436:5;849:146;;138:1:0;;;344:1436:5;849:146;;138:1:0;;;344:1436:5;;138:1:0;;;:::i;:::-;344:1436:5;138:1:0;344:1436:5;;138:1:0;;;:::i;:::-;;;;;344:1436:5;138:1:0;;;;344:1436:5;138:1:0;;;;;;344:1436:5;849:146;;138:1:0;;;;1686:84:5;344:1436;;138:1:0;;;;;344:1436:5;;;;;1686:84;;;;;;344:1436;;;;;;;;;;;;;;;;;;;;;;;;;1686:84;;;;;;;;;;;:::i;:::-;344:1436;1676:95;;138:1:0;;344:1436:5;138:1:0;344:1436:5;;138:1:0;344:1436:5;;138:1:0;;1051:84:5;;138:1:0;;;;;;344:1436:5;138:1:0;344:1436:5;;138:1:0;344:1436:5;;138:1:0;;;;;;;;;344:1436:5;;;;;;138:1:0;;344:1436:5;138:1:0;;;;;;;;344:1436:5;;138:1:0;;;;;;;;;;;;;344:1436:5;;;;;;138:1:0;;;;;;;;:::i;:::-;344:1436:5;138:1:0;;;;344:1436:5;138:1:0;;344:1436:5;138:1:0;;;344:1436:5;138:1:0;;;344:1436:5;;;;138:1:0;;;;;;;;;;;;;;;;;;;;;;344:1436:5;1222:41;344:1436;;1238:10;1222:41;1238:10;1222:41;;;:::i;:::-;;;;344:1436;;;;;;138:1:0;;;;-1:-1:-1;138:1:0;;;;;344:1436:5;138:1:0;;;;;;;-1:-1:-1;;;138:1:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:1436:5;138:1:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:1436:5;138:1:0;344:1436:5;;138:1:0;344:1436:5;138:1:0;;;;;;;344:1436:5;138:1:0;;;;;344:1436:5;138:1:0;;;;;;;;;;;;;;;344:1436:5;138:1:0;;;;;;;;;-1:-1:-1;138:1:0;;;;;344:1436:5;;;;;;;;;;;1051:84;1109:15;;;344:1436;1109:15;344:1436;;1109:15;344:1436;;;;;;-1:-1:-1;;344:1436:5;;;;;1055:104:6;;344:1436:5;1072:24:6;1089:6;1072:24;:::i;:::-;1120:6;;1103:24;1120:6;1103:24;:::i;:::-;1151:6;;1134:24;1151:6;1134:24;:::i;:::-;344:1436:5;;;;;;;;;;;;1055:104:6;;;344:1436:5;;;;-1:-1:-1;;;344:1436:5;;;;;;;;;;;;;;;;;-1:-1:-1;;;344:1436:5;;;;;;;;;;;;;;;;;;;;;1055:104:6;;;;;;;;;;:::i;:::-;344:1436:5;;;;;1055:104:6;344:1436:5;;1055:104:6;344:1436:5;;;;;;;;;;;;;;;;;;;;-1:-1:-1;344:1436:5;;;;;;;;-1:-1:-1;;344:1436:5;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;138:1:0;344:1436:5;;;;;;;;;;;;;:::o;:::-;;;1055:104:6;;344:1436:5;;;;;;;;;;;;;;;;:::o;138:1:0:-;;;;;;344:1436:5;;-1:-1:-1;;344:1436:5;138:1:0;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;344:1436:5;;;138:1:0;;;;;;;;;;;;;;;1308:634:18;1430:17;-1:-1:-1;29282:17:23;-1:-1:-1;;;29282:17:23;;;29278:103;;1308:634:18;29398:17:23;29407:8;29978:7;29398:17;;;29394:103;;1308:634:18;29523:8:23;29514:17;;;29510:103;;1308:634:18;29639:7:23;29630:16;;;29626:100;;1308:634:18;29752:7:23;29743:16;;;29739:100;;1308:634:18;29865:7:23;29856:16;;;29852:100;;1308:634:18;29969:16:23;;29965:66;;1308:634:18;29978:7:23;1545:94:18;1450:1;344:1436:5;;;;;;:::i;:::-;;138:1:0;344:1436:5;;138:1:0;;;:::i;:::-;344:1436:5;;;;1055:104:6;;344:1436:5;;:::i;:::-;;;;;;;1545:94:18;;;1652:247;-1:-1:-1;;344:1436:5;;-1:-1:-1;;;1706:111:18;;;;344:1436:5;1706:111:18;344:1436:5;1867:10:18;;1863:21;;29978:7:23;1652:247:18;;;;1863:21;1879:5;;1308:634;:::o;29965:66:23:-;30015:1;344:1436:5;;;;29965:66:23;;29852:100;29865:7;29936:1;344:1436:5;;;;29852:100:23;;;29739;29752:7;29823:1;344:1436:5;;;;29739:100:23;;;29626;29639:7;29710:1;344:1436:5;;;;29626:100:23;;;29510:103;29523:8;29596:2;344:1436:5;;;;29510:103:23;;;29394;29407:8;29480:2;344:1436:5;;;;29394:103:23;;;29278;-1:-1:-1;29364:2:23;;-1:-1:-1;;;;344:1436:5;;29278:103:23;"
            },
            "methodIdentifiers": {
              "getSchema(bytes32)": "a2ea7c6e",
              "register(string,address,bool)": "60d7a278",
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyExists\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"registerer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"struct SchemaRecord\",\"name\":\"schema\",\"type\":\"tuple\"}],\"name\":\"Registered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"getSchema\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"}],\"internalType\":\"struct SchemaRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"}],\"name\":\"register\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Registered(bytes32,address,(bytes32,address,bool,string))\":{\"params\":{\"registerer\":\"The address of the account used to register the schema.\",\"schema\":\"The schema data.\",\"uid\":\"The schema UID.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Creates a new SchemaRegistry instance.\"},\"getSchema(bytes32)\":{\"params\":{\"uid\":\"The UID of the schema to retrieve.\"},\"returns\":{\"_0\":\"The schema data members.\"}},\"register(string,address,bool)\":{\"params\":{\"resolver\":\"An optional schema resolver.\",\"revocable\":\"Whether the schema allows revocations explicitly.\",\"schema\":\"The schema data schema.\"},\"returns\":{\"_0\":\"The UID of the new schema.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"title\":\"SchemaRegistry\",\"version\":1},\"userdoc\":{\"events\":{\"Registered(bytes32,address,(bytes32,address,bool,string))\":{\"notice\":\"Emitted when a new schema has been registered\"}},\"kind\":\"user\",\"methods\":{\"getSchema(bytes32)\":{\"notice\":\"Returns an existing schema by UID\"},\"register(string,address,bool)\":{\"notice\":\"Submits and reserves a new schema\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"notice\":\"The global schema registry.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol\":\"SchemaRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/Common.sol\":{\"keccak256\":\"0x957bd2e6d0d6d637f86208b135c29fbaf4412cb08e5e7a61ede16b80561bf685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da1dc9aedbb1d4d39c46c2235918d3adfbc5741dd34a46010cf425d134e7936d\",\"dweb:/ipfs/QmWUk6bXnLaghS2riF3GTFEeURCzgYFMA5woa6AsgPwEgc\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol\":{\"keccak256\":\"0xea97dcd36a0c422169cbaac06698249e199049b627c16bff93fb8ab829058754\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d453a929ef64a69cd31195ec2ee5ed1193bfa29f633e13c960e92154c37ad158\",\"dweb:/ipfs/QmXs1Z3njbHs2EMgHonrZDfcwdog4kozHY5tYNrhZK5yqz\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol\":{\"keccak256\":\"0x03ba24da8053a6ace797cd2683971b4f4a55909adbb3928c57d9864b71ff0a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14ef01ae0216b9f2eaa794f2bb49705c2d2df6d65e667d8a47d13a2fd3201d79\",\"dweb:/ipfs/QmYALhY8KaD5AhgHiUxZWxpMuD4eznae9dLr9594kZFSgm\"]},\"@ethereum-attestation-service/eas-contracts/contracts/Semver.sol\":{\"keccak256\":\"0x4f23442d048661b6aaa188ddc16b69cb310c2e44066b3852026afcb4201d61a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c36e580cd93d9acb13e1a11e833946a8bd0bd2a8d1b2be049f0d96e0989808\",\"dweb:/ipfs/QmXmQTxKjSrUWutafQsqkbGufXqtzxuDAiMMJjXCHXiEqh\"]},\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":{\"keccak256\":\"0xb7d1961ed928c620cddf35c2bf46845b10828bc5d73145214630202ed355b6bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf1cabacfb15c9bace8280b540b52e5aa440e1b4eba675f9782c34ce0f03902f\",\"dweb:/ipfs/QmakYcK4xbrijzvoaBCmBJK6HeaBqbXxWKtDQ1z62aXwCR\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "@ethereum-attestation-service/eas-contracts/contracts/Semver.sol": {
        "Semver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "major",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "minor",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "patch",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e034607957601f6103c838819003918201601f19168301916001600160401b03831184841017607d57808492606094604052833981010312607957805190604060208201519101519160805260a05260c05260405161033690816100928239608051816039015260a05181606b015260c0518160960152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c6354fd4d5014610024575f80fd5b3461013d575f36600319011261013d5761005d7f0000000000000000000000000000000000000000000000000000000000000000610193565b60406020610112600161008f7f0000000000000000000000000000000000000000000000000000000000000000610193565b81846100ba7f0000000000000000000000000000000000000000000000000000000000000000610193565b818851978895818088019c8d815192839201905e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f198101835282610141565b8151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b5f80fd5b90601f8019910116810190811067ffffffffffffffff82111761016357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161016357601f01601f191660200190565b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8210156102dd575b806d04ee2d6d415b85acef8100000000600a9210156102c2575b662386f26fc100008110156102ae575b6305f5e10081101561029d575b61271081101561028e575b6064811015610280575b1015610275575b600a6021600184019361021a85610177565b946102286040519687610141565b808652610237601f1991610177565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304801561027057600a9091610242565b505090565b600190910190610208565b606460029104930192610201565b612710600491049301926101f7565b6305f5e100600891049301926101ec565b662386f26fc10000601091049301926101df565b6d04ee2d6d415b85acef8100000000602091049301926101cf565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b81046101b556fea2646970667358221220d99d9f929625adb5f23b5318b5961851ab6eb4da7251bbb66093771e084557af64736f6c634300081b0033",
              "opcodes": "PUSH1 0xE0 CALLVALUE PUSH1 0x79 JUMPI PUSH1 0x1F PUSH2 0x3C8 CODESIZE DUP2 SWAP1 SUB SWAP2 DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT DUP5 DUP5 LT OR PUSH1 0x7D JUMPI DUP1 DUP5 SWAP3 PUSH1 0x60 SWAP5 PUSH1 0x40 MSTORE DUP4 CODECOPY DUP2 ADD SUB SLT PUSH1 0x79 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x40 PUSH1 0x20 DUP3 ADD MLOAD SWAP2 ADD MLOAD SWAP2 PUSH1 0x80 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x336 SWAP1 DUP2 PUSH2 0x92 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH1 0x39 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH1 0x6B ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH1 0x96 ADD MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x54FD4D50 EQ PUSH2 0x24 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x13D JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x13D JUMPI PUSH2 0x5D PUSH32 0x0 PUSH2 0x193 JUMP JUMPDEST PUSH1 0x40 PUSH1 0x20 PUSH2 0x112 PUSH1 0x1 PUSH2 0x8F PUSH32 0x0 PUSH2 0x193 JUMP JUMPDEST DUP2 DUP5 PUSH2 0xBA PUSH32 0x0 PUSH2 0x193 JUMP JUMPDEST DUP2 DUP9 MLOAD SWAP8 DUP9 SWAP6 DUP2 DUP1 DUP9 ADD SWAP13 DUP14 DUP2 MLOAD SWAP3 DUP4 SWAP3 ADD SWAP1 MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x141 JUMP JUMPDEST DUP2 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 MSTORE MLOAD DUP1 SWAP2 DUP2 PUSH1 0x20 DUP6 ADD MSTORE DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x163 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x163 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x2DD JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x2C2 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x2AE JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x29D JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x28E JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x280 JUMPI JUMPDEST LT ISZERO PUSH2 0x275 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x21A DUP6 PUSH2 0x177 JUMP JUMPDEST SWAP5 PUSH2 0x228 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x141 JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x237 PUSH1 0x1F NOT SWAP2 PUSH2 0x177 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x242 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x208 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x201 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x1EC JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x1DF JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x1CF JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x1B5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 SWAP14 SWAP16 SWAP3 SWAP7 0x25 0xAD 0xB5 CALLCODE EXTCODESIZE MSTORE8 XOR 0xB5 SWAP7 XOR MLOAD 0xAB PUSH15 0xB4DA7251BBB66093771E084557AF64 PUSH20 0x6F6C634300081B00330000000000000000000000 ",
              "sourceMap": "250:932:6:-:0;;;;;;;;;;;;;-1:-1:-1;;250:932:6;;;;-1:-1:-1;;;;;250:932:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;759:14;;;783;;807;;250:932;;;;;;;;759:14;250:932;;;;;783:14;250:932;;;;;807:14;250:932;;;;;;;-1:-1:-1;250:932:6;;;;;;-1:-1:-1;250:932:6;;;;;-1:-1:-1;250:932:6"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "array_allocation_size_string": {
                  "entryPoint": 375,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 321,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_toString": {
                  "entryPoint": 403,
                  "id": 4057,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [],
              "immutableReferences": {
                "2532": [
                  {
                    "length": 32,
                    "start": 57
                  }
                ],
                "2534": [
                  {
                    "length": 32,
                    "start": 107
                  }
                ],
                "2536": [
                  {
                    "length": 32,
                    "start": 150
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361015610011575f80fd5b5f3560e01c6354fd4d5014610024575f80fd5b3461013d575f36600319011261013d5761005d7f0000000000000000000000000000000000000000000000000000000000000000610193565b60406020610112600161008f7f0000000000000000000000000000000000000000000000000000000000000000610193565b81846100ba7f0000000000000000000000000000000000000000000000000000000000000000610193565b818851978895818088019c8d815192839201905e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f198101835282610141565b8151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b5f80fd5b90601f8019910116810190811067ffffffffffffffff82111761016357604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161016357601f01601f191660200190565b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8210156102dd575b806d04ee2d6d415b85acef8100000000600a9210156102c2575b662386f26fc100008110156102ae575b6305f5e10081101561029d575b61271081101561028e575b6064811015610280575b1015610275575b600a6021600184019361021a85610177565b946102286040519687610141565b808652610237601f1991610177565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304801561027057600a9091610242565b505090565b600190910190610208565b606460029104930192610201565b612710600491049301926101f7565b6305f5e100600891049301926101ec565b662386f26fc10000601091049301926101df565b6d04ee2d6d415b85acef8100000000602091049301926101cf565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b81046101b556fea2646970667358221220d99d9f929625adb5f23b5318b5961851ab6eb4da7251bbb66093771e084557af64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR PUSH4 0x54FD4D50 EQ PUSH2 0x24 JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x13D JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x13D JUMPI PUSH2 0x5D PUSH32 0x0 PUSH2 0x193 JUMP JUMPDEST PUSH1 0x40 PUSH1 0x20 PUSH2 0x112 PUSH1 0x1 PUSH2 0x8F PUSH32 0x0 PUSH2 0x193 JUMP JUMPDEST DUP2 DUP5 PUSH2 0xBA PUSH32 0x0 PUSH2 0x193 JUMP JUMPDEST DUP2 DUP9 MLOAD SWAP8 DUP9 SWAP6 DUP2 DUP1 DUP9 ADD SWAP13 DUP14 DUP2 MLOAD SWAP3 DUP4 SWAP3 ADD SWAP1 MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x141 JUMP JUMPDEST DUP2 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 MSTORE MLOAD DUP1 SWAP2 DUP2 PUSH1 0x20 DUP6 ADD MSTORE DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x163 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x163 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x2DD JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x2C2 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x2AE JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x29D JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x28E JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x280 JUMPI JUMPDEST LT ISZERO PUSH2 0x275 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x21A DUP6 PUSH2 0x177 JUMP JUMPDEST SWAP5 PUSH2 0x228 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x141 JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x237 PUSH1 0x1F NOT SWAP2 PUSH2 0x177 JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x242 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x208 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x201 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x1EC JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x1DF JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x1CF JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x1B5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 SWAP14 SWAP16 SWAP3 SWAP7 0x25 0xAD 0xB5 CALLCODE EXTCODESIZE MSTORE8 XOR 0xB5 SWAP7 XOR MLOAD 0xAB PUSH15 0xB4DA7251BBB66093771E084557AF64 PUSH20 0x6F6C634300081B00330000000000000000000000 ",
              "sourceMap": "250:932:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;250:932:6;;;;1072:24;1089:6;1072:24;:::i;:::-;250:932;1055:104;;250:932;1103:24;1120:6;1103:24;:::i;:::-;1151:6;;1134:24;1151:6;1134:24;:::i;:::-;250:932;;;1055:104;;;;;;;250:932;;;;;;;;;;;;;-1:-1:-1;;;250:932:6;;;;;;;;;;;;;;;;;-1:-1:-1;;;250:932:6;;;;;;;;;;;;;;;;;;;;;1055:104;;;;;;;;;;:::i;:::-;250:932;;;;;1055:104;250:932;;;;;;1055:104;250:932;;;;;;;;;;;;;;;;-1:-1:-1;;250:932:6;;;;;;;;;;;;;;1055:104;;250:932;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;250:932:6;;;;;-1:-1:-1;250:932:6;;;;;;;;;-1:-1:-1;;250:932:6;;;;:::o;1308:634:18:-;1430:17;-1:-1:-1;29282:17:23;-1:-1:-1;;;29282:17:23;;;29278:103;;1308:634:18;29398:17:23;29407:8;29978:7;29398:17;;;29394:103;;1308:634:18;29523:8:23;29514:17;;;29510:103;;1308:634:18;29639:7:23;29630:16;;;29626:100;;1308:634:18;29752:7:23;29743:16;;;29739:100;;1308:634:18;29865:7:23;29856:16;;;29852:100;;1308:634:18;29969:16:23;;29965:66;;1308:634:18;29978:7:23;1545:94:18;1450:1;250:932:6;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;1055:104;;250:932;;:::i;:::-;;;;;;;1545:94:18;;;1652:247;-1:-1:-1;;250:932:6;;-1:-1:-1;;;1706:111:18;;;;250:932:6;1706:111:18;250:932:6;1867:10:18;;1863:21;;29978:7:23;1652:247:18;;;;1863:21;1879:5;;1308:634;:::o;29965:66:23:-;30015:1;250:932:6;;;;29965:66:23;;29852:100;29865:7;29936:1;250:932:6;;;;29852:100:23;;;29739;29752:7;29823:1;250:932:6;;;;29739:100:23;;;29626;29639:7;29710:1;250:932:6;;;;29626:100:23;;;29510:103;29523:8;29596:2;250:932:6;;;;29510:103:23;;;29394;29407:8;29480:2;250:932:6;;;;29394:103:23;;;29278;-1:-1:-1;29364:2:23;;-1:-1:-1;;;;250:932:6;;29278:103:23;"
            },
            "methodIdentifiers": {
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"major\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minor\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"patch\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Create a new Semver instance.\",\"params\":{\"major\":\"Major version number.\",\"minor\":\"Minor version number.\",\"patch\":\"Patch version number.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"title\":\"Semver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"notice\":\"A simple contract for managing contract versions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ethereum-attestation-service/eas-contracts/contracts/Semver.sol\":\"Semver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/Semver.sol\":{\"keccak256\":\"0x4f23442d048661b6aaa188ddc16b69cb310c2e44066b3852026afcb4201d61a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c36e580cd93d9acb13e1a11e833946a8bd0bd2a8d1b2be049f0d96e0989808\",\"dweb:/ipfs/QmXmQTxKjSrUWutafQsqkbGufXqtzxuDAiMMJjXCHXiEqh\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol": {
        "EIP1271Verifier": {
          "abi": [
            {
              "inputs": [],
              "name": "InvalidNonce",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidShortString",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "str",
                  "type": "string"
                }
              ],
              "name": "StringTooLong",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EIP712DomainChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldNonce",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "NonceIncreased",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "eip712Domain",
              "outputs": [
                {
                  "internalType": "bytes1",
                  "name": "fields",
                  "type": "bytes1"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "version",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "verifyingContract",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "salt",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256[]",
                  "name": "extensions",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAttestTypeHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDomainSeparator",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getName",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getRevokeTypeHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "increaseNonce",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "eip712Domain()": "84b0196e",
              "getAttestTypeHash()": "12b11a17",
              "getDomainSeparator()": "ed24911d",
              "getName()": "17d7de7c",
              "getNonce(address)": "2d0335ab",
              "getRevokeTypeHash()": "b83010d3",
              "increaseNonce(uint256)": "79f7573a"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceIncreased\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAttestTypeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRevokeTypeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"name\":\"increaseNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"NonceIncreased(uint256,uint256)\":{\"params\":{\"newNonce\":\"The new value.\",\"oldNonce\":\"The previous nonce.\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Creates a new EIP1271Verifier instance.\",\"params\":{\"version\":\"The current major version of the signing domain\"}},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"getAttestTypeHash()\":{\"returns\":{\"_0\":\"The EIP712 type hash for the attest function.\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"The domain separator used in the encoding of the signatures for attest, and revoke.\"}},\"getName()\":{\"returns\":{\"_0\":\"The EIP712 name.\"}},\"getNonce(address)\":{\"params\":{\"account\":\"The requested account.\"},\"returns\":{\"_0\":\"The current nonce.\"}},\"getRevokeTypeHash()\":{\"returns\":{\"_0\":\"The EIP712 type hash for the revoke function.\"}},\"increaseNonce(uint256)\":{\"params\":{\"newNonce\":\"The (higher) new value.\"}}},\"title\":\"EIP1271Verifier\",\"version\":1},\"userdoc\":{\"events\":{\"NonceIncreased(uint256,uint256)\":{\"notice\":\"Emitted when users invalidate nonces by increasing their nonces to (higher) new values.\"}},\"kind\":\"user\",\"methods\":{\"getAttestTypeHash()\":{\"notice\":\"Returns the EIP712 type hash for the attest function.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator used in the encoding of the signatures for attest, and revoke.\"},\"getName()\":{\"notice\":\"Returns the EIP712 name.\"},\"getNonce(address)\":{\"notice\":\"Returns the current nonce per-account.\"},\"getRevokeTypeHash()\":{\"notice\":\"Returns the EIP712 type hash for the revoke function.\"},\"increaseNonce(uint256)\":{\"notice\":\"Provides users an option to invalidate nonces by increasing their nonces to (higher) new values.\"}},\"notice\":\"EIP1271Verifier typed signatures verifier for EAS delegated attestations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol\":\"EIP1271Verifier\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/Common.sol\":{\"keccak256\":\"0x957bd2e6d0d6d637f86208b135c29fbaf4412cb08e5e7a61ede16b80561bf685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da1dc9aedbb1d4d39c46c2235918d3adfbc5741dd34a46010cf425d134e7936d\",\"dweb:/ipfs/QmWUk6bXnLaghS2riF3GTFEeURCzgYFMA5woa6AsgPwEgc\"]},\"@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol\":{\"keccak256\":\"0xdad0674defce04905dc7935f2756d6c477a6e876c0b1b7094b112a862f164c12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49e448c26c08952df034692d2ab3519dd40a1ebbeae4ce68b294567441933880\",\"dweb:/ipfs/QmWHcudjskUSCjgqsNWE65LVfWvcYB2vBn8RB1SmzvRLNR\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol\":{\"keccak256\":\"0xea97dcd36a0c422169cbaac06698249e199049b627c16bff93fb8ab829058754\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d453a929ef64a69cd31195ec2ee5ed1193bfa29f633e13c960e92154c37ad158\",\"dweb:/ipfs/QmXs1Z3njbHs2EMgHonrZDfcwdog4kozHY5tYNrhZK5yqz\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol\":{\"keccak256\":\"0x590977110db1256cc00416bdf74eb8264a0eda358ccded303610369a2930b614\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef015b3bee8859e6658c0eac6471d05f2991a5f4b6b5c2aa5571bbdab622d6e9\",\"dweb:/ipfs/QmUHriGkixE62c5qWjyM9DWZFykDcjQ7T6Tbfi3DPD38ym\"]},\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":{\"keccak256\":\"0xb7d1961ed928c620cddf35c2bf46845b10828bc5d73145214630202ed355b6bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf1cabacfb15c9bace8280b540b52e5aa440e1b4eba675f9782c34ce0f03902f\",\"dweb:/ipfs/QmakYcK4xbrijzvoaBCmBJK6HeaBqbXxWKtDQ1z62aXwCR\"]},\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04\",\"dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"@openzeppelin/contracts/interfaces/IERC7913.sol\":{\"keccak256\":\"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5\",\"dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0x1613f93e376ab96791fd29f79da754e253c3d766831bc8c42f50545662f49065\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e88ee314d50d0f323616f88d0ccf5e4110dbdec2775d8d42523bcc8b76ed36eb\",\"dweb:/ipfs/QmQ18ygHRrDdz4AEZXy5PASUHvJk1SNWWKM3TyC1xvDedP\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746\",\"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x0f39d23ae345355f0913470b15d00c0434754302077ac97cdc038b5c000fc5cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5ebc3233ff506c43e0f9960d2459403f878bbb63b7c71c318f16839564919ac\",\"dweb:/ipfs/QmbctngFd6aQkHVqZeFAL3iHfw4X7wNgfsgUxX8t26U2m4\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol": {
        "ISchemaResolver": {
          "abi": [
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint64",
                      "name": "time",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "expirationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "revocationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "refUID",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "recipient",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Attestation",
                  "name": "attestation",
                  "type": "tuple"
                }
              ],
              "name": "attest",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "isPayable",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint64",
                      "name": "time",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "expirationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "revocationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "refUID",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "recipient",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Attestation[]",
                  "name": "attestations",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "multiAttest",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint64",
                      "name": "time",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "expirationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "revocationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "refUID",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "recipient",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Attestation[]",
                  "name": "attestations",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "values",
                  "type": "uint256[]"
                }
              ],
              "name": "multiRevoke",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint64",
                      "name": "time",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "expirationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "revocationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "refUID",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "recipient",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Attestation",
                  "name": "attestation",
                  "type": "tuple"
                }
              ],
              "name": "revoke",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "attest((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes))": "e60c3505",
              "isPayable()": "ce46e046",
              "multiAttest((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes)[],uint256[])": "91db0b7e",
              "multiRevoke((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes)[],uint256[])": "88e5b2d9",
              "revoke((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes))": "e49617e1",
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"time\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revocationTime\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Attestation\",\"name\":\"attestation\",\"type\":\"tuple\"}],\"name\":\"attest\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isPayable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"time\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revocationTime\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Attestation[]\",\"name\":\"attestations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"multiAttest\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"time\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revocationTime\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Attestation[]\",\"name\":\"attestations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"multiRevoke\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"time\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revocationTime\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Attestation\",\"name\":\"attestation\",\"type\":\"tuple\"}],\"name\":\"revoke\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"attest((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes))\":{\"params\":{\"attestation\":\"The new attestation.\"},\"returns\":{\"_0\":\"Whether the attestation is valid.\"}},\"isPayable()\":{\"returns\":{\"_0\":\"Whether the resolver supports ETH transfers.\"}},\"multiAttest((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes)[],uint256[])\":{\"params\":{\"attestations\":\"The new attestations.\",\"values\":\"Explicit ETH amounts which were sent with each attestation.\"},\"returns\":{\"_0\":\"Whether all the attestations are valid.\"}},\"multiRevoke((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes)[],uint256[])\":{\"params\":{\"attestations\":\"The existing attestations to be revoked.\",\"values\":\"Explicit ETH amounts which were sent with each revocation.\"},\"returns\":{\"_0\":\"Whether the attestations can be revoked.\"}},\"revoke((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes))\":{\"params\":{\"attestation\":\"The existing attestation to be revoked.\"},\"returns\":{\"_0\":\"Whether the attestation can be revoked.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"title\":\"ISchemaResolver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"attest((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes))\":{\"notice\":\"Processes an attestation and verifies whether it's valid.\"},\"isPayable()\":{\"notice\":\"Checks if the resolver can be sent ETH.\"},\"multiAttest((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes)[],uint256[])\":{\"notice\":\"Processes multiple attestations and verifies whether they are valid.\"},\"multiRevoke((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes)[],uint256[])\":{\"notice\":\"Processes revocation of multiple attestation and verifies they can be revoked.\"},\"revoke((bytes32,bytes32,uint64,uint64,uint64,bytes32,address,address,bool,bytes))\":{\"notice\":\"Processes an attestation revocation and verifies if it can be revoked.\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"notice\":\"The interface of an optional schema resolver.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":\"ISchemaResolver\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/Common.sol\":{\"keccak256\":\"0x957bd2e6d0d6d637f86208b135c29fbaf4412cb08e5e7a61ede16b80561bf685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da1dc9aedbb1d4d39c46c2235918d3adfbc5741dd34a46010cf425d134e7936d\",\"dweb:/ipfs/QmWUk6bXnLaghS2riF3GTFEeURCzgYFMA5woa6AsgPwEgc\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":{\"keccak256\":\"0xb7d1961ed928c620cddf35c2bf46845b10828bc5d73145214630202ed355b6bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf1cabacfb15c9bace8280b540b52e5aa440e1b4eba675f9782c34ce0f03902f\",\"dweb:/ipfs/QmakYcK4xbrijzvoaBCmBJK6HeaBqbXxWKtDQ1z62aXwCR\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/interfaces/IERC1271.sol": {
        "IERC1271": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "isValidSignature",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isValidSignature(bytes32,bytes)": "1626ba7e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with `hash`\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04\",\"dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/interfaces/IERC5267.sol": {
        "IERC5267": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [],
              "name": "EIP712DomainChanged",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "eip712Domain",
              "outputs": [
                {
                  "internalType": "bytes1",
                  "name": "fields",
                  "type": "bytes1"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "version",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "verifyingContract",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "salt",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256[]",
                  "name": "extensions",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "eip712Domain()": "84b0196e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":\"IERC5267\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/interfaces/IERC7913.sol": {
        "IERC7913SignatureVerifier": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "key",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes32",
                  "name": "hash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "verify",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "verify(bytes,bytes32,bytes)": "024ad318"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"key\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Signature verifier interface.\",\"kind\":\"dev\",\"methods\":{\"verify(bytes,bytes32,bytes)\":{\"details\":\"Verifies `signature` as a valid signature of `hash` by `key`. MUST return the bytes4 magic value IERC7913SignatureVerifier.verify.selector if the signature is valid. SHOULD return 0xffffffff or revert if the signature is not valid. SHOULD return 0xffffffff or revert if the key is empty\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC7913.sol\":\"IERC7913SignatureVerifier\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC7913.sol\":{\"keccak256\":\"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5\",\"dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Address.sol": {
        "Address": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "target",
                  "type": "address"
                }
              ],
              "name": "AddressEmptyCode",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212205c2fc7b501a0fb92f87f16a384db9a8ec5f75be716b022963c4ca93f2f33994464736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TLOAD 0x2F 0xC7 0xB5 ADD LOG0 0xFB SWAP3 0xF8 PUSH32 0x16A384DB9A8EC5F75BE716B022963C4CA93F2F33994464736F6C634300081B00 CALLER ",
              "sourceMap": "233:5762:12:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea26469706673582212205c2fc7b501a0fb92f87f16a384db9a8ec5f75be716b022963c4ca93f2f33994464736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TLOAD 0x2F 0xC7 0xB5 ADD LOG0 0xFB SWAP3 0xF8 PUSH32 0x16A384DB9A8EC5F75BE716B022963C4CA93F2F33994464736F6C634300081B00 CALLER ",
              "sourceMap": "233:5762:12:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Bytes.sol": {
        "Bytes": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220b7e8c9a3959c1cee54b1d873cbcc081606b823af6a9e78e9f210f971f5f0382e64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xE8 0xC9 LOG3 SWAP6 SWAP13 SHR 0xEE SLOAD 0xB1 0xD8 PUSH20 0xCBCC081606B823AF6A9E78E9F210F971F5F0382E PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "198:4690:13:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea2646970667358221220b7e8c9a3959c1cee54b1d873cbcc081606b823af6a9e78e9f210f971f5f0382e64736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB7 0xE8 0xC9 LOG3 SWAP6 SWAP13 SHR 0xEE SLOAD 0xB1 0xD8 PUSH20 0xCBCC081606B823AF6A9E78E9F210F971F5F0382E PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "198:4690:13:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Bytes operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Bytes.sol\":\"Bytes\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0x1613f93e376ab96791fd29f79da754e253c3d766831bc8c42f50545662f49065\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e88ee314d50d0f323616f88d0ccf5e4110dbdec2775d8d42523bcc8b76ed36eb\",\"dweb:/ipfs/QmQ18ygHRrDdz4AEZXy5PASUHvJk1SNWWKM3TyC1xvDedP\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Errors.sol": {
        "Errors": {
          "abi": [
            {
              "inputs": [],
              "name": "FailedCall",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "FailedDeployment",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "MissingPrecompile",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220ef2d19e55174cd2a429ce1af0977a7e816aa65c8354ea1993655b4273e200d7564736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF 0x2D NOT 0xE5 MLOAD PUSH21 0xCD2A429CE1AF0977A7E816AA65C8354EA1993655B4 0x27 RETURNDATACOPY KECCAK256 0xD PUSH22 0x64736F6C634300081B00330000000000000000000000 ",
              "sourceMap": "411:484:14:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea2646970667358221220ef2d19e55174cd2a429ce1af0977a7e816aa65c8354ea1993655b4273e200d7564736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF 0x2D NOT 0xE5 MLOAD PUSH21 0xCD2A429CE1AF0977A7E816AA65C8354EA1993655B4 0x27 RETURNDATACOPY KECCAK256 0xD PUSH22 0x64736F6C634300081B00330000000000000000000000 ",
              "sourceMap": "411:484:14:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Panic.sol": {
        "Panic": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220be2a5b19cb1e504bc4ac0612cb05f114c1ddaf5d93a22379acbc5fb02bd8b23464736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE 0x2A JUMPDEST NOT 0xCB 0x1E POP 0x4B 0xC4 0xAC MOD SLT 0xCB SDIV CALL EQ 0xC1 0xDD 0xAF TSTORE SWAP4 LOG2 0x23 PUSH26 0xACBC5FB02BD8B23464736F6C634300081B003300000000000000 ",
              "sourceMap": "657:1315:15:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea2646970667358221220be2a5b19cb1e504bc4ac0612cb05f114c1ddaf5d93a22379acbc5fb02bd8b23464736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE 0x2A JUMPDEST NOT 0xCB 0x1E POP 0x4B 0xC4 0xAC MOD SLT 0xCB SDIV CALL EQ 0xC1 0xDD 0xAF TSTORE SWAP4 LOG2 0x23 PUSH26 0xACBC5FB02BD8B23464736F6C634300081B003300000000000000 ",
              "sourceMap": "657:1315:15:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example {      using Panic for uint256;      // Use any of the declared internal constants      function foo() { Panic.GENERIC.panic(); }      // Alternatively      function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/ShortStrings.sol": {
        "ShortStrings": {
          "abi": [
            {
              "inputs": [],
              "name": "InvalidShortString",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "str",
                  "type": "string"
                }
              ],
              "name": "StringTooLong",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212202494085ac0997c4e6fb376c68666a573dc9a34fae0738e0544722153b17e469864736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 SWAP5 ADDMOD GAS 0xC0 SWAP10 PUSH29 0x4E6FB376C68666A573DC9A34FAE0738E0544722153B17E469864736F6C PUSH4 0x4300081B STOP CALLER ",
              "sourceMap": "1255:3046:16:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea26469706673582212202494085ac0997c4e6fb376c68666a573dc9a34fae0738e0544722153b17e469864736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 SWAP5 ADDMOD GAS 0xC0 SWAP10 PUSH29 0x4E6FB376C68666A573DC9A34FAE0738E0544722153B17E469864736F6C PUSH4 0x4300081B STOP CALLER ",
              "sourceMap": "1255:3046:16:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides functions to convert short memory strings into a `ShortString` type that can be used as an immutable variable. Strings of arbitrary length can be optimized using this library if they are short enough (up to 31 bytes) by packing them with their length (1 byte) in a single EVM word (32 bytes). Additionally, a fallback mechanism can be used for every other case. Usage example: ```solidity contract Named {     using ShortStrings for *;     ShortString private immutable _name;     string private _nameFallback;     constructor(string memory contractName) {         _name = contractName.toShortStringWithFallback(_nameFallback);     }     function name() external view returns (string memory) {         return _name.toStringWithFallback(_nameFallback);     } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ShortStrings.sol\":\"ShortStrings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/StorageSlot.sol": {
        "StorageSlot": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220bcb9c3a5360c13b0ac8c62d207560b0e1e6ba4c48b9c8ba8bc8f8c98f6f0cebb64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC 0xB9 0xC3 0xA5 CALLDATASIZE 0xC SGT 0xB0 0xAC DUP13 PUSH3 0xD20756 SIGNEXTEND 0xE 0x1E PUSH12 0xA4C48B9C8BA8BC8F8C98F6F0 0xCE 0xBB PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "1407:2774:17:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea2646970667358221220bcb9c3a5360c13b0ac8c62d207560b0e1e6ba4c48b9c8ba8bc8f8c98f6f0cebb64736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC 0xB9 0xC3 0xA5 CALLDATASIZE 0xC SGT 0xB0 0xAC DUP13 PUSH3 0xD20756 SIGNEXTEND 0xE 0x1E PUSH12 0xA4C48B9C8BA8BC8F8C98F6F0 0xCE 0xBB PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "1407:2774:17:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 {     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/Strings.sol": {
        "Strings": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "length",
                  "type": "uint256"
                }
              ],
              "name": "StringsInsufficientHexLength",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "StringsInvalidAddressFormat",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "StringsInvalidChar",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220cbf56ff6c9a7af4698f3a6c3d289695a2b9c43aeea7ca1c6c432cf0305b83d5e64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB CREATE2 PUSH16 0xF6C9A7AF4698F3A6C3D289695A2B9C43 0xAE 0xEA PUSH29 0xA1C6C432CF0305B83D5E64736F6C634300081B00330000000000000000 ",
              "sourceMap": "297:18982:18:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea2646970667358221220cbf56ff6c9a7af4698f3a6c3d289695a2b9c43aeea7ca1c6c432cf0305b83d5e64736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB CREATE2 PUSH16 0xF6C9A7AF4698F3A6C3D289695A2B9C43 0xAE 0xEA PUSH29 0xA1C6C432CF0305B83D5E64736F6C634300081B00330000000000000000 ",
              "sourceMap": "297:18982:18:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidAddressFormat\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidChar\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}],\"StringsInvalidAddressFormat()\":[{\"details\":\"The string being parsed is not a properly formatted address.\"}],\"StringsInvalidChar()\":[{\"details\":\"The string being parsed contains characters that are not in scope of the given base.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
        "ECDSA": {
          "abi": [
            {
              "inputs": [],
              "name": "ECDSAInvalidSignature",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "length",
                  "type": "uint256"
                }
              ],
              "name": "ECDSAInvalidSignatureLength",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "ECDSAInvalidSignatureS",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212205cf0b0caaae566ea4e01d22a52b2459c0fc0b03bfb75ec0159e1a917df3cba7564736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TLOAD CREATE 0xB0 0xCA 0xAA 0xE5 PUSH7 0xEA4E01D22A52B2 GASLIMIT SWAP13 0xF 0xC0 0xB0 EXTCODESIZE 0xFB PUSH22 0xEC0159E1A917DF3CBA7564736F6C634300081B003300 ",
              "sourceMap": "344:7470:19:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea26469706673582212205cf0b0caaae566ea4e01d22a52b2459c0fc0b03bfb75ec0159e1a917df3cba7564736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TLOAD CREATE 0xB0 0xCA 0xAA 0xE5 PUSH7 0xEA4E01D22A52B2 GASLIMIT SWAP13 0xF 0xC0 0xB0 EXTCODESIZE 0xFB PUSH22 0xEC0159E1A917DF3CBA7564736F6C634300081B003300 ",
              "sourceMap": "344:7470:19:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/cryptography/EIP712.sol": {
        "EIP712": {
          "abi": [
            {
              "inputs": [],
              "name": "InvalidShortString",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "str",
                  "type": "string"
                }
              ],
              "name": "StringTooLong",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EIP712DomainChanged",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "eip712Domain",
              "outputs": [
                {
                  "internalType": "bytes1",
                  "name": "fields",
                  "type": "bytes1"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "version",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "verifyingContract",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "salt",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256[]",
                  "name": "extensions",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "eip712Domain()": "84b0196e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\",\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data. The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to produce the hash of their typed data using a combination of `abi.encode` and `keccak256`. This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\",\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746\",\"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": {
        "MessageHashUtils": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212204b6ae69d4b6242f82da2c2e1259ce5ba70d4a99d0fca1137711e78e930b4161964736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B PUSH11 0xE69D4B6242F82DA2C2E125 SWAP13 0xE5 0xBA PUSH17 0xD4A99D0FCA1137711E78E930B416196473 PUSH16 0x6C634300081B00330000000000000000 ",
              "sourceMap": "521:3729:21:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea26469706673582212204b6ae69d4b6242f82da2c2e1259ce5ba70d4a99d0fca1137711e78e930b4161964736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B PUSH11 0xE69D4B6242F82DA2C2E125 SWAP13 0xE5 0xBA PUSH17 0xD4A99D0FCA1137711E78E930B416196473 PUSH16 0x6C634300081B00330000000000000000 ",
              "sourceMap": "521:3729:21:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing. The library provides methods for generating a hash of a message that conforms to the https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712] specifications.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":\"MessageHashUtils\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol": {
        "SignatureChecker": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212207c39f26e5481b2d68dd4543c948dcd58c3fd8a9902c2b656f58b5ef0fb662e4a64736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0x39F26E5481B2D68DD4543C948DCD58C3FD8A9902C2B656F58B5EF0FB66 0x2E BLOBBASEFEE PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "841:5206:22:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea26469706673582212207c39f26e5481b2d68dd4543c948dcd58c3fd8a9902c2b656f58b5ef0fb662e4a64736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0x39F26E5481B2D68DD4543C948DCD58C3FD8A9902C2B656F58B5EF0FB66 0x2E BLOBBASEFEE PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "841:5206:22:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support: * ECDSA signatures from externally owned accounts (EOAs) * ERC-1271 signatures from smart contract wallets like Argent and Safe Wallet (previously Gnosis Safe) * ERC-7913 signatures from keys that do not have an Ethereum address of their own See https://eips.ethereum.org/EIPS/eip-1271[ERC-1271] and https://eips.ethereum.org/EIPS/eip-7913[ERC-7913].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":\"SignatureChecker\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04\",\"dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E\"]},\"@openzeppelin/contracts/interfaces/IERC7913.sol\":{\"keccak256\":\"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5\",\"dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0x1613f93e376ab96791fd29f79da754e253c3d766831bc8c42f50545662f49065\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e88ee314d50d0f323616f88d0ccf5e4110dbdec2775d8d42523bcc8b76ed36eb\",\"dweb:/ipfs/QmQ18ygHRrDdz4AEZXy5PASUHvJk1SNWWKM3TyC1xvDedP\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x0f39d23ae345355f0913470b15d00c0434754302077ac97cdc038b5c000fc5cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5ebc3233ff506c43e0f9960d2459403f878bbb63b7c71c318f16839564919ac\",\"dweb:/ipfs/QmbctngFd6aQkHVqZeFAL3iHfw4X7wNgfsgUxX8t26U2m4\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/math/Math.sol": {
        "Math": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea26469706673582212202758da456419dae5fe3acb03ed81d9192f524370c7eae737886553495617313264736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 PC 0xDA GASLIMIT PUSH5 0x19DAE5FE3A 0xCB SUB 0xED DUP2 0xD9 NOT 0x2F MSTORE NUMBER PUSH17 0xC7EAE737886553495617313264736F6C63 NUMBER STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "281:31863:23:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea26469706673582212202758da456419dae5fe3acb03ed81d9192f524370c7eae737886553495617313264736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x27 PC 0xDA GASLIMIT PUSH5 0x19DAE5FE3A 0xCB SUB 0xED DUP2 0xD9 NOT 0x2F MSTORE NUMBER PUSH17 0xC7EAE737886553495617313264736F6C63 NUMBER STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "281:31863:23:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/math/SafeCast.sol": {
        "SafeCast": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "bits",
                  "type": "uint8"
                },
                {
                  "internalType": "int256",
                  "name": "value",
                  "type": "int256"
                }
              ],
              "name": "SafeCastOverflowedIntDowncast",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "int256",
                  "name": "value",
                  "type": "int256"
                }
              ],
              "name": "SafeCastOverflowedIntToUint",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "bits",
                  "type": "uint8"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "SafeCastOverflowedUintDowncast",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "SafeCastOverflowedUintToInt",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220fab42da13acc977e2c562793cb590e1860af977bbaea0f6dc8a0389770a986a164736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL 0xB4 0x2D LOG1 GASPRICE 0xCC SWAP8 PUSH31 0x2C562793CB590E1860AF977BBAEA0F6DC8A0389770A986A164736F6C634300 ADDMOD SHL STOP CALLER ",
              "sourceMap": "769:34173:24:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea2646970667358221220fab42da13acc977e2c562793cb590e1860af977bbaea0f6dc8a0389770a986a164736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL 0xB4 0x2D LOG1 GASPRICE 0xCC SWAP8 PUSH31 0x2C562793CB590E1860AF977BBAEA0F6DC8A0389770A986A164736F6C634300 ADDMOD SHL STOP CALLER ",
              "sourceMap": "769:34173:24:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}"
        }
      },
      "@openzeppelin/contracts/utils/math/SignedMath.sol": {
        "SignedMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080806040523460175760399081601c823930815050f35b5f80fdfe5f80fdfea2646970667358221220750787fcd623d9cbc6ee64e7e7ed8715dc4a7debc7df2622038adacf3c379ac764736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x17 JUMPI PUSH1 0x39 SWAP1 DUP2 PUSH1 0x1C DUP3 CODECOPY ADDRESS DUP2 POP POP RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x787FCD623D9CBC6EE64E7E7ED8715DC4A7DEBC7DF26 0x22 SUB DUP11 0xDA 0xCF EXTCODECOPY CALLDATACOPY SWAP11 0xC7 PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "258:2354:25:-:0;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "5f80fdfea2646970667358221220750787fcd623d9cbc6ee64e7e7ed8715dc4a7debc7df2622038adacf3c379ac764736f6c634300081b0033",
              "opcodes": "PUSH0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x787FCD623D9CBC6EE64E7E7ED8715DC4A7DEBC7DF26 0x22 SUB DUP11 0xDA 0xCF EXTCODECOPY CALLDATACOPY SWAP11 0xC7 PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "258:2354:25:-:0;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}"
        }
      },
      "contracts/CustomEAS.sol": {
        "CustomEAS": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract ISchemaRegistry",
                  "name": "registry",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "AccessDenied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "AlreadyRevoked",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "AlreadyRevokedOffchain",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "AlreadyTimestamped",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "DeadlineExpired",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "FailedCall",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "balance",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "needed",
                  "type": "uint256"
                }
              ],
              "name": "InsufficientBalance",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidAttestation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidAttestations",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidExpirationTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidLength",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidNonce",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidOffset",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidRegistry",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidRevocation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidRevocations",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSchema",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidShortString",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidVerifier",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "Irrevocable",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NotFound",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NotPayable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "str",
                  "type": "string"
                }
              ],
              "name": "StringTooLong",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "WrongSchema",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "attester",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "schemaUID",
                  "type": "bytes32"
                }
              ],
              "name": "Attested",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [],
              "name": "EIP712DomainChanged",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "oldNonce",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "NonceIncreased",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "attester",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "schemaUID",
                  "type": "bytes32"
                }
              ],
              "name": "Revoked",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "revoker",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint64",
                  "name": "timestamp",
                  "type": "uint64"
                }
              ],
              "name": "RevokedOffchain",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "uint64",
                  "name": "timestamp",
                  "type": "uint64"
                }
              ],
              "name": "Timestamped",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData",
                      "name": "data",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct AttestationRequest",
                  "name": "request",
                  "type": "tuple"
                }
              ],
              "name": "attest",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData",
                      "name": "data",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature",
                      "name": "signature",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct DelegatedAttestationRequest",
                  "name": "delegatedRequest",
                  "type": "tuple"
                }
              ],
              "name": "attestByDelegation",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "eip712Domain",
              "outputs": [
                {
                  "internalType": "bytes1",
                  "name": "fields",
                  "type": "bytes1"
                },
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "version",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "chainId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "verifyingContract",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "salt",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256[]",
                  "name": "extensions",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAttestTypeHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "getAttestation",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint64",
                      "name": "time",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "expirationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "uint64",
                      "name": "revocationTime",
                      "type": "uint64"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "refUID",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "address",
                      "name": "recipient",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Attestation",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getDomainSeparator",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getName",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "revoker",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "getRevokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getRevokeTypeHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSchemaRegistry",
              "outputs": [
                {
                  "internalType": "contract ISchemaRegistry",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "getTimestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "increaseNonce",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "isAttestationValid",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct MultiAttestationRequest[]",
                  "name": "multiRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiAttest",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "",
                  "type": "bytes32[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "recipient",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "expirationTime",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bool",
                          "name": "revocable",
                          "type": "bool"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "refUID",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct AttestationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature[]",
                      "name": "signatures",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "address",
                      "name": "attester",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MultiDelegatedAttestationRequest[]",
                  "name": "multiDelegatedRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiAttestByDelegation",
              "outputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "",
                  "type": "bytes32[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct MultiRevocationRequest[]",
                  "name": "multiRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiRevoke",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData[]",
                      "name": "data",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature[]",
                      "name": "signatures",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "address",
                      "name": "revoker",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct MultiDelegatedRevocationRequest[]",
                  "name": "multiDelegatedRequests",
                  "type": "tuple[]"
                }
              ],
              "name": "multiRevokeByDelegation",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "data",
                  "type": "bytes32[]"
                }
              ],
              "name": "multiRevokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32[]",
                  "name": "data",
                  "type": "bytes32[]"
                }
              ],
              "name": "multiTimestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData",
                      "name": "data",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct RevocationRequest",
                  "name": "request",
                  "type": "tuple"
                }
              ],
              "name": "revoke",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "schema",
                      "type": "bytes32"
                    },
                    {
                      "components": [
                        {
                          "internalType": "bytes32",
                          "name": "uid",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "value",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct RevocationRequestData",
                      "name": "data",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "v",
                          "type": "uint8"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "r",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "s",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct Signature",
                      "name": "signature",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "revoker",
                      "type": "address"
                    },
                    {
                      "internalType": "uint64",
                      "name": "deadline",
                      "type": "uint64"
                    }
                  ],
                  "internalType": "struct DelegatedRevocationRequest",
                  "name": "delegatedRequest",
                  "type": "tuple"
                }
              ],
              "name": "revokeByDelegation",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "revokeOffchain",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "timestamp",
              "outputs": [
                {
                  "internalType": "uint64",
                  "name": "",
                  "type": "uint64"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "finalize_allocation": {
                  "entryPoint": 816,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_toShortStringWithFallback": {
                  "entryPoint": 1237,
                  "id": 3760,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_toShortStringWithFallback_3311": {
                  "entryPoint": 851,
                  "id": 3760,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "6101e0806040523461032c57602081613e5080380380916100208285610330565b83398101031261032c57516001600160a01b0381169081810361032c576040519161004c604084610330565b60038352602083016245415360e81b81526040519061006c604083610330565b600582526020820190640312e332e360dc1b82526001608052600360a0525f60c05261009786610353565b610180526100a4836104d5565b6101a05285519020918261014052519020806101605246610100526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261011060c082610330565b51902060e052306101205282516001600160401b03811161031857600254600181811c9116801561030e575b60208210146102fa57601f8111610297575b506020601f821160011461023457819293945f92610229575b50508160011b915f199060031b1c1916176002555b1561021a576101c052604051613842908161060e82396080518161081d015260a05181610848015260c05181610873015260e05181612e7901526101005181612f3601526101205181612e4301526101405181612ec801526101605181612eee015261018051816106d101526101a051816106fd01526101c0518181816101cd01528181611ad201528181611d01015281816120b0015261268a0152f35b6311a1e69760e01b5f5260045ffd5b015190505f80610167565b601f1982169060025f52805f20915f5b81811061027f57509583600195969710610267575b505050811b0160025561017c565b01515f1960f88460031b161c191690555f8080610259565b9192602060018192868b015181550194019201610244565b60025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f830160051c810191602084106102f0575b601f0160051c01905b8181106102e5575061014e565b5f81556001016102d8565b90915081906102cf565b634e487b7160e01b5f52602260045260245ffd5b90607f169061013c565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761031857604052565b908151602081105f146103cd575090601f81511161038d57602081519101516020821061037e571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b038111610318575f54600181811c911680156104cb575b60208210146102fa57601f8111610499575b50602092601f821160011461043a57928192935f9261042f575b50508160011b915f199060031b1c1916175f5560ff90565b015190505f80610417565b601f198216935f8052805f20915f5b8681106104815750836001959610610469575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f808061045c565b91926020600181928685015181550194019201610449565b5f8052601f60205f20910160051c810190601f830160051c015b8181106104c057506103fd565b5f81556001016104b3565b90607f16906103eb565b908151602081105f14610500575090601f81511161038d57602081519101516020821061037e571790565b6001600160401b03811161031857600154600181811c91168015610603575b60208210146102fa57601f81116105d0575b50602092601f821160011461056f57928192935f92610564575b50508160011b915f199060031b1c19161760015560ff90565b015190505f8061054b565b601f1982169360015f52805f20915f5b8681106105b857508360019596106105a0575b505050811b0160015560ff90565b01515f1960f88460031b161c191690555f8080610592565b9192602060018192868501518155019401920161057f565b60015f52601f60205f20910160051c810190601f830160051c015b8181106105f85750610531565b5f81556001016105eb565b90607f169061051f56fe6101206040526004361015610012575f80fd5b5f3560e01c80630eabf66014610d9357806312b11a1714610d5957806313893f6114610cea57806317d7de7c14610c205780632d0335ab14610be85780633c04271514610af857806344adc90e14610a1a57806346926267146109da5780634cb7e9e5146109295780634d0030701461090057806354fd4d50146107fe57806379f7573a1461078657806384b0196e146106b957806395411525146104c6578063a3112a641461047b578063a6d4dbc7146103a4578063b469318d14610357578063b83010d31461031d578063cf190f34146102f3578063d45c4435146102c0578063e30bb5631461028c578063e71ff3651461021e578063ed24911d146101fc578063f10b5cc8146101b85763f17325e71461012d575f80fd5b60203660031901126101b4576004356001600160401b0381116101b45780600401604060031983360301126101b45760206101a481936101ab936101866101726114e1565b92610181602436920184611546565b611425565b61018f836112ff565b52610199826112ff565b503491339135612067565b01516112ff565b51604051908152f35b5f80fd5b346101b4575f3660031901126101b4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b4575f3660031901126101b4576020610216612e40565b604051908152f35b346101b45760203660031901126101b4576004356001600160401b0381116101b45761024e903690600401610f94565b906001600160401b034216915f5b81811061026e57602084604051908152f35b80610286856102806001948688611341565b35612c61565b0161025c565b346101b45760203660031901126101b45760206102b66004355f52600460205260405f2054151590565b6040519015158152f35b346101b45760203660031901126101b4576004355f52600560205260206001600160401b0360405f205416604051908152f35b346101b45760203660031901126101b45760206001600160401b0342166102168160043533611ea2565b346101b4575f3660031901126101b45760206040517fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e758152f35b346101b45760403660031901126101b4576001600160a01b03610378610fe8565b165f52600660205260405f206024355f5260205260206001600160401b0360405f205416604051908152f35b6101003660031901126101b4576040516103bd81611142565b6004358082526103cc36611216565b602083015260603660631901126101b4576040516103e98161118c565b60643560ff811681036101b4578152608435602082015260a43560408083019190915283015260c4356001600160a01b03811681036101b45780606084015260e4356001600160401b03811681036101b4578361044d91608061047996015261182b565b61045561167a565b61045e36611216565b610467826112ff565b52610471816112ff565b503492611ab5565b005b346101b45760203660031901126101b45761049461172d565b506004355f5260046020526104c26104ae60405f20611777565b60405191829160208352602083019061107e565b0390f35b60203660031901126101b4576004356001600160401b0381116101b4576104f1903690600401610f94565b6104fa8161156f565b5f9290915f198101913491855b818110610527576104c261051b8888612bf9565b60405191829182611012565b61053681838598969798611120565b9661054460208901896115da565b929091831580156106a1575b6106925789965f98959895604089019560608a019a60808b359b0135996001600160401b038b16809b1415995b83811015610624578f906105a08b61059a8360051b8d018d611546565b936116f8565b821015610610578f6105b28e9161155b565b906101b4578f908f906105ef61060a946105de600198604051966105d588611142565b87523690611425565b6020860152369060608802016112ad565b6040840152858060a01b031660608301526080820152611f26565b0161057d565b634e487b7160e01b5f52603260045260245ffd5b509a8d9e50839a50610660949c93929199506001985061065a6106699698889f6106529060209a149661155b565b93369161160f565b9061263a565b95865190611320565b94018051610677898961130c565b52610682888861130c565b5051510196949592939201610507565b63251f56a160e21b5f5260045ffd5b506106af60408b018b6116f8565b9050841415610550565b346101b4575f3660031901126101b4576107586106f57f000000000000000000000000000000000000000000000000000000000000000061345b565b6104c26107217f00000000000000000000000000000000000000000000000000000000000000006134ba565b610766604051916107336020846111de565b5f83525f368137604051958695600f60f81b875260e0602088015260e0870190610fc4565b908582036040870152610fc4565b904660608501523060808501525f60a085015283820360c085015261104b565b346101b45760203660031901126101b457600435335f52600360205260405f205490818111156107ef577f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb791604091335f52600360205280835f205582519182526020820152a1005b633ab3447f60e11b5f5260045ffd5b346101b4575f3660031901126101b4576104c260206108ec60016108417f0000000000000000000000000000000000000000000000000000000000000000612cd3565b818461086c7f0000000000000000000000000000000000000000000000000000000000000000612cd3565b81806108977f0000000000000000000000000000000000000000000000000000000000000000612cd3565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826111de565b604051918291602083526020830190610fc4565b346101b45760203660031901126101b45760206001600160401b03421661021681600435612c61565b60203660031901126101b4576004356001600160401b0381116101b457610954903690600401610f94565b5f19810191905f90345b81831061096757005b6109728383866115b8565b6020810135601e19823603018112156101b4578101918235926001600160401b0384116101b457602001928060061b360384136101b457600193826109cc926109d2956109c58c8b14943393369161123e565b9035611ce0565b90611320565b92019161095e565b60603660031901126101b4576104796109f161167a565b6109fa36611216565b610a03826112ff565b52610a0d816112ff565b5034903390600435611ab5565b60203660031901126101b4576004356001600160401b0381116101b457610a45903690600401610f94565b90610a4f8261156f565b915f9134905f925f198101905b808510610a70576104c261051b8789612bf9565b9091929394610a808683866115b8565b906020820191610a9083826115da565b90501561069257610ad0610ac789898885610ac0610ab260019a6020996115da565b93909514943393369161160f565b903561263a565b97885190611320565b96018051610ade898b61130c565b52610ae9888a61130c565b50515101950193929190610a5c565b60203660031901126101b4576004356001600160401b0381116101b457806004019060e060031982360301126101b457604051610b3481611142565b82359283825260248301938435946001600160401b0386116101b457610be06101ab95610bc76101a495610bb460209a98610b768c9a60043691880101611425565b8a820152610b8736604487016112ad565b6040820152610baa60c460a4870196610b9f88610ffe565b6060850152016112eb565b6080820152611f26565b610181610bbf6114e1565b953692611546565b610bd0846112ff565b52610bda836112ff565b5061155b565b903492612067565b346101b45760203660031901126101b4576001600160a01b03610c09610fe8565b165f526003602052602060405f2054604051908152f35b346101b4575f3660031901126101b4576040515f600254610c4081611351565b8084529060018116908115610cc65750600114610c68575b6104c2836108ec818503826111de565b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b808210610cac575090915081016020016108ec610c58565b919260018160209254838588010152019101909291610c94565b60ff191660208086019190915291151560051b840190910191506108ec9050610c58565b346101b45760203660031901126101b4576004356001600160401b0381116101b457610d1a903690600401610f94565b906001600160401b034216915f5b818110610d3a57602084604051908152f35b80610d5385610d4c6001948688611341565b3533611ea2565b01610d28565b346101b4575f3660031901126101b45760206040517ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768152f35b60203660031901126101b4576004356001600160401b0381116101b457610dbe903690600401610f94565b5f198101915f91345b818410610dd057005b610ddb848385611120565b60a0813603126101b457604051610df181611142565b8135815260208201356001600160401b0381116101b457820136601f820112156101b457610e2690369060208135910161123e565b906020810191825260408301356001600160401b0381116101b457830136601f820112156101b457803590610e5a826111ff565b91610e6860405193846111de565b808352602060608185019202830101913683116101b457602001905b828210610f7a5750505060408201818152610eb46080610ea660608801610ffe565b9660608601978852016112eb565b936080840194855251938451928315908115610f6e575b50610692575f5b838110610f0b57505091519351600195610f039590946109cc94508a8c14935085926001600160a01b031691611ce0565b930192610dc7565b600190610f688651610f1d838a61130c565b51610f2984885161130c565b51858060a01b038c5116906001600160401b038851169260405194610f4d86611142565b8552602085015260408401526060830152608082015261182b565b01610ed2565b9050518314158c610ecb565b6020606091610f8936856112ad565b815201910190610e84565b9181601f840112156101b4578235916001600160401b0383116101b4576020808501948460051b0101116101b457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101b457565b35906001600160a01b03821682036101b457565b60206040818301928281528451809452019201905f5b8181106110355750505090565b8251845260209384019390920191600101611028565b90602080835192838152019201905f5b8181106110685750505090565b825184526020938401939092019160010161105b565b9061014061012061111d9380518452602081015160208501526001600160401b0360408201511660408501526001600160401b0360608201511660608501526001600160401b03608082015116608085015260a081015160a085015260018060a01b0360c08201511660c085015260018060a01b0360e08201511660e08501526101008101511515610100850152015191816101208201520190610fc4565b90565b91908110156106105760051b81013590609e19813603018212156101b4570190565b60a081019081106001600160401b0382111761115d57604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761115d57604052565b606081019081106001600160401b0382111761115d57604052565b60c081019081106001600160401b0382111761115d57604052565b61014081019081106001600160401b0382111761115d57604052565b90601f801991011681019081106001600160401b0382111761115d57604052565b6001600160401b03811161115d5760051b60200190565b60409060231901126101b4576040519061122f82611171565b60243582526044356020830152565b92919261124a826111ff565b9361125860405195866111de565b602085848152019260061b8201918183116101b457925b82841061127c5750505050565b6040848303126101b4576020604091825161129681611171565b86358152828701358382015281520193019261126f565b91908260609103126101b4576040516112c58161118c565b8092803560ff811681036101b45760409182918452602081013560208501520135910152565b35906001600160401b03821682036101b457565b8051156106105760200190565b80518210156106105760209160051b010190565b9190820391821161132d57565b634e487b7160e01b5f52601160045260245ffd5b91908110156106105760051b0190565b90600182811c9216801561137f575b602083101461136b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611360565b5f929181549161139883611351565b80835292600181169081156113ed57506001146113b457505050565b5f9081526020812093945091925b8383106113d3575060209250010190565b6001816020929493945483858701015201910191906113c2565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b03811161115d57601f01601f191660200190565b919060c0838203126101b4576040519061143e826111a7565b819361144981610ffe565b8352611457602082016112eb565b6020840152604081013580151581036101b45760408401526060810135606084015260808101356001600160401b0381116101b45781019082601f830112156101b4578135926114a68461140a565b906114b460405192836111de565b848252602085850101116101b4575f60208560a09682889701838601378301015260808501520135910152565b604080519091906114f283826111de565b6001815291601f1901825f5b82811061150a57505050565b602090604051611519816111a7565b5f81525f838201525f60408201525f6060820152606060808201525f60a0820152828285010152016114fe565b90359060be19813603018212156101b4570190565b356001600160a01b03811681036101b45790565b90611579826111ff565b61158660405191826111de565b8281528092611597601f19916111ff565b01905f5b8281106115a757505050565b80606060208093850101520161159b565b91908110156106105760051b81013590603e19813603018212156101b4570190565b903590601e19813603018212156101b457018035906001600160401b0382116101b457602001918160051b360383136101b457565b92919061161b816111ff565b9361162960405195866111de565b602085838152019160051b8101918383116101b45781905b83821061164f575050505050565b81356001600160401b0381116101b45760209161166f8784938701611425565b815201910190611641565b6040805190919061168b83826111de565b6001815291601f1901825f5b8281106116a357505050565b6020906040516116b281611171565b5f81525f8382015282828501015201611697565b906116d0826111ff565b6116dd60405191826111de565b82815280926116ee601f19916111ff565b0190602036910137565b903590601e19813603018212156101b457018035906001600160401b0382116101b4576020019160608202360383136101b457565b6040519061173a826111c2565b6060610120835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201520152565b906006610120604051611789816111c2565b611819819580548352600181015460208401526001600160401b0360028201548181166040860152818160401c16606086015260801c166080840152600381015460a084015260018060a01b0360048201541660c084015260ff600582015460018060a01b03811660e086015260a01c1615156101008401526118126040518096819301611389565b03846111de565b0152565b5f19811461132d5760010190565b608081016001600160401b038151168015159081611973575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160208251920151845f5260036020526001600160401b0360405f20928354936118968561181d565b90555116926040519460208601967fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75885260408701526060860152608085015260a084015260c083015260e082015260e081526118f5610100826111de565b519020612f5c565b9051602083810151604080860151955181519384019290925282019490945260f89390931b6001600160f81b0319166060840152604183526001600160a01b03166119496061846111de565b612f82565b1561195557565b638baa579f60e01b5f5260045ffd5b631ab7da6b60e01b5f5260045ffd5b90506001600160401b034216115f611844565b519081151582036101b457565b6020818303126101b4578051906001600160401b0382116101b45701906080828203126101b45760405191608083018381106001600160401b0382111761115d576040528051835260208101516001600160a01b03811681036101b4576020840152611a0160408201611986565b60408401526060810151906001600160401b0382116101b4570181601f820112156101b457805190611a328261140a565b92611a4060405194856111de565b828452602083830101116101b457815f9260208093018386015e83010152606082015290565b90611a70826111ff565b611a7d60405191826111de565b8281528092611a8e601f19916111ff565b01905f5b828110611a9e57505050565b602090611aa961172d565b82828501015201611a92565b6040516351753e3760e11b81526004810182905290915f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611cd5575f92611cb1575b50815115611c93578051611b1d81611a66565b93611b27826116c6565b95426001600160401b0316935f5b848110611b50575050505050509161111d93916001936130ca565b611b5a818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c6657825467ffffffffffffffff60801b191660808b901b67ffffffffffffffff60801b16179092556001938792908c90611c01908690611bfb90611777565b611777565b9261130c565b52611c0c848d61130c565b506020810151611c1c858f61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208d60c0611c53888a8060a01b039361130c565b510151169251604051908152a401611b35565b63905e710760e01b5f5260045ffd5b63157bd4c360e01b5f5260045ffd5b634ca8886760e01b5f5260045ffd5b635f9bd90760e11b5f5260045ffd5b63c5723b5160e01b5f5260045ffd5b611cce9192503d805f833e611cc681836111de565b810190611993565b905f611b0a565b6040513d5f823e3d90fd5b6040516351753e3760e11b8152600481018290529195949392915f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611cd5575f91611e88575b50805115611c93578651611d4c81611a66565b92611d56826116c6565b945f996001600160401b0342169a5b848110611d7c57505050505061111d9596506130ca565b611d86818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c66578f600195611bf6611e19928b96908154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b611e23858d61130c565b52611e2e848c61130c565b506020810151611e3e858e61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208c60c0611e75888a8060a01b039361130c565b510151169251604051908152a401611d65565b611e9c91503d805f833e611cc681836111de565b5f611d39565b60018060a01b031691825f52600660205260405f2090825f52816020526001600160401b0360405f205416611f17576001600160401b0391835f5260205260405f20828216831982541617905516917f92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a22295f80a4565b63ec9d6eeb60e01b5f5260045ffd5b608081016001600160401b03815116801515908161203b575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160018060a01b03825116916001600160401b03602082015116906040810151151560608201519060a060808401516020815191012093015193885f5260036020526001600160401b0360405f2096875497611fc38961181d565b90555116966040519860208a019a7ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768c5260408b015260608a0152608089015260a088015260c087015260e086015261010085015261012084015261014083015261016082015261016081526118f5610180826111de565b90506001600160401b034216115f611f3f565b6040519061205b82611171565b60606020835f81520152565b919260e05261207461204e565b5080519061208061204e565b6101005261208d826116c6565b61010051602001526040516351753e3760e11b8152600481018490525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611cd5575f60805261261e575b506080515115611c935790916120fe83611a66565b60a05261210a836116c6565b60c0525f915b83831061213e575050505050612132600160e05160c05160a0516080516132b4565b61010051526101005190565b61214e838297939495969761130c565b519160208301956001600160401b03875116801515908161260a575b506125fb576040608051015115806125ee575b611c75576001600160401b0360608501519751169660018060a01b0385511660408601511515906080870151926040519a6121b78c6111c2565b5f8c528960208d01526001600160401b03421660408d015260608c01525f60808c015260a08b015260c08a015260018060a01b038a1660e08a01526101008901526101208801525f5b6020880151886122d06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156122f4575060010163ffffffff16612200565b905097969094959197939293808252805f52600460205260405f209180518355602081015160018401556123a2600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d57899461242c6006840154611351565b601f8111612596575b50602090601f831160011461252857600692915f918361251d575b50508160011b915f199060031b1c1916179101555b6060850151806124f9575b50936001946124818560a05161130c565b5261248e8460a05161130c565b5060a08101516124a08560c05161130c565b52816124b385602061010051015161130c565b52848060a01b039051166040519182527f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b356020868060a01b038b1693a401919290612110565b6125109193505f52600460205260405f2054151590565b15611ca25786915f612470565b015190505f80612450565b90600684015f52805f20915f5b601f198516811061257b5750918391600193600695601f19811610612563575b505050811b01910155612465565b01515f1960f88460031b161c191690555f8080612555565b8183015184558d985060019093019260209283019201612535565b90919293949550600684015f5260205f20601f840160051c8101602085106125e7575b908c979695949392915b601f830160051c820181106125d9575050612435565b5f81558d98506001016125c3565b50806125b9565b506040840151151561217d565b6308e8b93760e01b5f5260045ffd5b90506001600160401b03421610155f61216a565b612631903d805f833e611cc681836111de565b6080525f6120e9565b919293909360c05260e05261264d61204e565b5082519061265961204e565b61010052612666826116c6565b61010051602001526040516351753e3760e11b815260048101829052935f856024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa948515611cd5575f95612bdd575b50845115611c9357906126d483611a66565b6080526126e0836116c6565b60a0525f915b83831061270b5750505050506121329060e0519060c0519060a05190608051906132b4565b90929491939561271b858361130c565b519260208401966001600160401b038851168015159081612bc9575b506125fb5760408201511580612bbc575b611c7557606085015197518551604080880151608089015191519b9193901515926001600160a01b031691906001600160401b03168a60208e61278a816111c2565b5f815201528c60406001600160401b03421691015260608d01525f60808d015260a08c015260c08b015260018060a01b038b1660e08b01526101008a01526101208901525f5b6020890151896128a06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156128c4575060010163ffffffff166127d0565b9050989691979095949298808252805f52600460205260405f20918051835560208101516001840155612971600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d5788946129fb6006840154611351565b601f8111612b64575b50602090601f8311600114612af657600692915f9183612aeb575b50508160011b915f199060031b1c1916179101555b606085015180612ac7575b5093600194612a508560805161130c565b52612a5d8460805161130c565b5060a0810151612a6f8560a05161130c565b5281612a8285602061010051015161130c565b52848060a01b039051166040519182527f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b356020868060a01b038b1693a40191906126e6565b612ade9193505f52600460205260405f2054151590565b15611ca25785915f612a3f565b015190505f80612a1f565b90600684015f52805f20915f5b601f1985168110612b495750918391600193600695601f19811610612b31575b505050811b01910155612a34565b01515f1960f88460031b161c191690555f8080612b23565b8183015184558c985060019093019260209283019201612b03565b90919293949550600684015f5260205f20601f840160051c810160208510612bb5575b908b979695949392915b601f830160051c82018110612ba7575050612a04565b5f81558c9850600101612b91565b5080612b87565b5060408501511515612748565b90506001600160401b03421610155f612737565b612bf29195503d805f833e611cc681836111de565b935f6126c2565b90612c03906116c6565b905f8151915f5b838110612c18575050505090565b612c22818361130c565b5180515f915b818310612c3a57505050600101612c0a565b90919460018091612c4b888561130c565b51612c56828c61130c565b520195019190612c28565b90815f5260056020526001600160401b0360405f205416612cc4576001600160401b0390825f52600560205260405f20828216831982541617905516907f5aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459f5f80a3565b6317133ca360e11b5f5260045ffd5b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b821015612e1d575b806d04ee2d6d415b85acef8100000000600a921015612e02575b662386f26fc10000811015612dee575b6305f5e100811015612ddd575b612710811015612dce575b6064811015612dc0575b1015612db5575b600a60216001840193612d5a8561140a565b94612d6860405196876111de565b808652612d77601f199161140a565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353048015612db057600a9091612d82565b505090565b600190910190612d48565b606460029104930192612d41565b61271060049104930192612d37565b6305f5e10060089104930192612d2c565b662386f26fc1000060109104930192612d1f565b6d04ee2d6d415b85acef810000000060209104930192612d0f565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8104612cf5565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612f33575b15612e9b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152612f2d60c0826111de565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612e72565b604290612f67612e40565b906040519161190160f01b8352600283015260228201522090565b9190823b612fd15790612f9491613520565b506004811015612fbd57159182612faa57505090565b6001600160a01b03918216911614919050565b634e487b7160e01b5f52602160045260245ffd5b915f9261300761301585946040519283916020830195630b135d3f60e11b87526024840152604060448401526064830190610fc4565b03601f1981018352826111de565b51915afa6130216134f1565b8161304f575b81613030575090565b90506020818051810103126101b45760200151630b135d3f60e11b1490565b905060208151101590613027565b929160408401936040815282518095526060810194602060608260051b8401019401905f5b81811061309f5750505061111d939450602081840391015261104b565b9091946020806130bb600193605f19888203018c52895161107e565b97019801910196919096613082565b9391908051946001861461328e57602001516001600160a01b031690811561324f57604051636723702360e11b81525f9690602081600481875afa908115611cd5575f91613215575b50905f915b8183106131b9575050509160209161314793876040518096819582946388e5b2d960e01b84526004840161305d565b03925af1908115611cd5575f9161317f575b501561317057613167575090565b61111d9061372e565b63bf2f3a8b60e01b5f5260045ffd5b90506020813d6020116131b1575b8161319a602093836111de565b810103126101b4576131ab90611986565b5f613159565b3d915061318d565b909197966131c7898761130c565b51801561320a5782156131fb578181116131ec5780600192039801985b019190613118565b63044044a560e21b5f5260045ffd5b631574f9f360e01b5f5260045ffd5b5096976001906131e4565b90506020813d602011613247575b81613230602093836111de565b810103126101b45761324190611986565b5f613113565b3d9150613223565b50505f939192935b8281106132775750505061326a57505f90565b6132739061372e565b5f90565b613281818361130c565b516131fb57600101613257565b9061111d9550916132ad6132a66001949695966112ff565b51916112ff565b519161355a565b9391908051946001861461344457602001516001600160a01b031690811561341257604051636723702360e11b81525f9690602081600481875afa908115611cd5575f916133d8575b50905f915b81831061339a575050509160209161333193876040518096819582946348ed85bf60e11b84526004840161305d565b03925af1908115611cd5575f91613360575b501561335157613167575090565b63e8bee83960e01b5f5260045ffd5b90506020813d602011613392575b8161337b602093836111de565b810103126101b45761338c90611986565b5f613343565b3d915061336e565b909197966133a8898761130c565b5180156133cd5782156131fb578181116131ec5780600192039801985b019190613302565b5096976001906133c5565b90506020813d60201161340a575b816133f3602093836111de565b810103126101b45761340490611986565b5f6132fd565b3d91506133e6565b50505f939192935b82811061342d5750505061326a57505f90565b613437818361130c565b516131fb5760010161341a565b9061111d9550916132ad6132a65f949695966112ff565b60ff81146134a15760ff811690601f8211613492576040519161347f6040846111de565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b5060405161111d816134b3815f611389565b03826111de565b60ff81146134de5760ff811690601f8211613492576040519161347f6040846111de565b5060405161111d816134b3816001611389565b3d1561351b573d906135028261140a565b9161351060405193846111de565b82523d5f602084013e565b606090565b8151919060418303613550576135499250602082015190606060408401519301515f1a9061378a565b9192909190565b50505f9160029190565b6020015191949290916001600160a01b031690811561371c57908592918361369f575b602092919015613618576135ae9160405194858094819363e49617e160e01b8352876004840152602483019061107e565b03925af1908115611cd5575f916135de575b50156135cf575b613167575090565b63ccf3bb2760e01b5f5260045ffd5b90506020813d602011613610575b816135f9602093836111de565b810103126101b45761360a90611986565b5f6135c0565b3d91506135ec565b61363f9160405194858094819363e60c350560e01b8352876004840152602483019061107e565b03925af1908115611cd5575f91613665575b506135c75763bd8ba84d60e01b5f5260045ffd5b90506020813d602011613697575b81613680602093836111de565b810103126101b45761369190611986565b5f613651565b3d9150613673565b9491909250604051636723702360e11b8152602081600481875afa908115611cd5575f916136e2575b50156131fb578186116131ec57908590039385929061357d565b90506020813d602011613714575b816136fd602093836111de565b810103126101b45761370e90611986565b5f6136c8565b3d91506136f0565b50505090916131fb5761326a57505f90565b806137365750565b804710613774575f80808093335af161374d6134f1565b90156137565750565b80511561376557602081519101fd5b63d6bda27560e01b5f5260045ffd5b4763cf47918160e01b5f5260045260245260445ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613801579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611cd5575f516001600160a01b038116156137f757905f905f90565b505f906001905f90565b5050505f916003919056fea26469706673582212207ee7d0784d1e2f31fe3051b5c9419341fc69728b5548377f2d9a8b661c25766c64736f6c634300081b0033",
              "opcodes": "PUSH2 0x1E0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x32C JUMPI PUSH1 0x20 DUP2 PUSH2 0x3E50 DUP1 CODESIZE SUB DUP1 SWAP2 PUSH2 0x20 DUP3 DUP6 PUSH2 0x330 JUMP JUMPDEST DUP4 CODECOPY DUP2 ADD SUB SLT PUSH2 0x32C JUMPI MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 DUP2 DUP2 SUB PUSH2 0x32C JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x4C PUSH1 0x40 DUP5 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD PUSH3 0x454153 PUSH1 0xE8 SHL DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x6C PUSH1 0x40 DUP4 PUSH2 0x330 JUMP JUMPDEST PUSH1 0x5 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 PUSH5 0x312E332E3 PUSH1 0xDC SHL DUP3 MSTORE PUSH1 0x1 PUSH1 0x80 MSTORE PUSH1 0x3 PUSH1 0xA0 MSTORE PUSH0 PUSH1 0xC0 MSTORE PUSH2 0x97 DUP7 PUSH2 0x353 JUMP JUMPDEST PUSH2 0x180 MSTORE PUSH2 0xA4 DUP4 PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1A0 MSTORE DUP6 MLOAD SWAP1 KECCAK256 SWAP2 DUP3 PUSH2 0x140 MSTORE MLOAD SWAP1 KECCAK256 DUP1 PUSH2 0x160 MSTORE CHAINID PUSH2 0x100 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x110 PUSH1 0xC0 DUP3 PUSH2 0x330 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0xE0 MSTORE ADDRESS PUSH2 0x120 MSTORE DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x318 JUMPI PUSH1 0x2 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x30E JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x2FA JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x297 JUMPI JUMPDEST POP PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x234 JUMPI DUP2 SWAP3 SWAP4 SWAP5 PUSH0 SWAP3 PUSH2 0x229 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x2 SSTORE JUMPDEST ISZERO PUSH2 0x21A JUMPI PUSH2 0x1C0 MSTORE PUSH1 0x40 MLOAD PUSH2 0x3842 SWAP1 DUP2 PUSH2 0x60E DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x81D ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x848 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0x873 ADD MSTORE PUSH1 0xE0 MLOAD DUP2 PUSH2 0x2E79 ADD MSTORE PUSH2 0x100 MLOAD DUP2 PUSH2 0x2F36 ADD MSTORE PUSH2 0x120 MLOAD DUP2 PUSH2 0x2E43 ADD MSTORE PUSH2 0x140 MLOAD DUP2 PUSH2 0x2EC8 ADD MSTORE PUSH2 0x160 MLOAD DUP2 PUSH2 0x2EEE ADD MSTORE PUSH2 0x180 MLOAD DUP2 PUSH2 0x6D1 ADD MSTORE PUSH2 0x1A0 MLOAD DUP2 PUSH2 0x6FD ADD MSTORE PUSH2 0x1C0 MLOAD DUP2 DUP2 DUP2 PUSH2 0x1CD ADD MSTORE DUP2 DUP2 PUSH2 0x1AD2 ADD MSTORE DUP2 DUP2 PUSH2 0x1D01 ADD MSTORE DUP2 DUP2 PUSH2 0x20B0 ADD MSTORE PUSH2 0x268A ADD MSTORE RETURN JUMPDEST PUSH4 0x11A1E697 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x167 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP1 PUSH1 0x2 PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x27F JUMPI POP SWAP6 DUP4 PUSH1 0x1 SWAP6 SWAP7 SWAP8 LT PUSH2 0x267 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x2 SSTORE PUSH2 0x17C JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x259 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP12 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x244 JUMP JUMPDEST PUSH1 0x2 PUSH0 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x2F0 JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x2E5 JUMPI POP PUSH2 0x14E JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2D8 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x2CF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x13C JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x318 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH1 0x20 DUP2 LT PUSH0 EQ PUSH2 0x3CD JUMPI POP SWAP1 PUSH1 0x1F DUP2 MLOAD GT PUSH2 0x38D JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD PUSH1 0x20 DUP3 LT PUSH2 0x37E JUMPI OR SWAP1 JUMP JUMPDEST PUSH0 NOT DUP3 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x44 PUSH1 0x20 SWAP2 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP4 MSTORE DUP2 PUSH1 0x4 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH1 0x24 DUP7 ADD MSTORE ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x318 JUMPI PUSH0 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x4CB JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x2FA JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x499 JUMPI JUMPDEST POP PUSH1 0x20 SWAP3 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x43A JUMPI SWAP3 DUP2 SWAP3 SWAP4 PUSH0 SWAP3 PUSH2 0x42F JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x417 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP4 PUSH0 DUP1 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP7 DUP2 LT PUSH2 0x481 JUMPI POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x469 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH0 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x45C JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x449 JUMP JUMPDEST PUSH0 DUP1 MSTORE PUSH1 0x1F PUSH1 0x20 PUSH0 KECCAK256 SWAP2 ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x4C0 JUMPI POP PUSH2 0x3FD JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4B3 JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x3EB JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH1 0x20 DUP2 LT PUSH0 EQ PUSH2 0x500 JUMPI POP SWAP1 PUSH1 0x1F DUP2 MLOAD GT PUSH2 0x38D JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD PUSH1 0x20 DUP3 LT PUSH2 0x37E JUMPI OR SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x318 JUMPI PUSH1 0x1 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x603 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x2FA JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x5D0 JUMPI JUMPDEST POP PUSH1 0x20 SWAP3 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x56F JUMPI SWAP3 DUP2 SWAP3 SWAP4 PUSH0 SWAP3 PUSH2 0x564 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x54B JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP4 PUSH1 0x1 PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST DUP7 DUP2 LT PUSH2 0x5B8 JUMPI POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x5A0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x1 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x592 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x57F JUMP JUMPDEST PUSH1 0x1 PUSH0 MSTORE PUSH1 0x1F PUSH1 0x20 PUSH0 KECCAK256 SWAP2 ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x5F8 JUMPI POP PUSH2 0x531 JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x51F JUMP INVALID PUSH2 0x120 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEABF660 EQ PUSH2 0xD93 JUMPI DUP1 PUSH4 0x12B11A17 EQ PUSH2 0xD59 JUMPI DUP1 PUSH4 0x13893F61 EQ PUSH2 0xCEA JUMPI DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0xC20 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0xBE8 JUMPI DUP1 PUSH4 0x3C042715 EQ PUSH2 0xAF8 JUMPI DUP1 PUSH4 0x44ADC90E EQ PUSH2 0xA1A JUMPI DUP1 PUSH4 0x46926267 EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0x4CB7E9E5 EQ PUSH2 0x929 JUMPI DUP1 PUSH4 0x4D003070 EQ PUSH2 0x900 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x7FE JUMPI DUP1 PUSH4 0x79F7573A EQ PUSH2 0x786 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0x95411525 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0xA3112A64 EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xA6D4DBC7 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0xB469318D EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0xB83010D3 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xCF190F34 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xD45C4435 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xE30BB563 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xE71FF365 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xF10B5CC8 EQ PUSH2 0x1B8 JUMPI PUSH4 0xF17325E7 EQ PUSH2 0x12D JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x40 PUSH1 0x3 NOT DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x1A4 DUP2 SWAP4 PUSH2 0x1AB SWAP4 PUSH2 0x186 PUSH2 0x172 PUSH2 0x14E1 JUMP JUMPDEST SWAP3 PUSH2 0x181 PUSH1 0x24 CALLDATASIZE SWAP3 ADD DUP5 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x1425 JUMP JUMPDEST PUSH2 0x18F DUP4 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0x199 DUP3 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP2 CALLER SWAP2 CALLDATALOAD PUSH2 0x2067 JUMP JUMPDEST ADD MLOAD PUSH2 0x12FF JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x216 PUSH2 0x2E40 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x24E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x26E JUMPI PUSH1 0x20 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH2 0x286 DUP6 PUSH2 0x280 PUSH1 0x1 SWAP5 DUP7 DUP9 PUSH2 0x1341 JUMP JUMPDEST CALLDATALOAD PUSH2 0x2C61 JUMP JUMPDEST ADD PUSH2 0x25C JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x2B6 PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH2 0x216 DUP2 PUSH1 0x4 CALLDATALOAD CALLER PUSH2 0x1EA2 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xB5D556F07587EC0F08CF386545CC4362C702A001650C2058002615EE5C9D1E75 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x378 PUSH2 0xFE8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x24 CALLDATALOAD PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x100 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3BD DUP2 PUSH2 0x1142 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD DUP1 DUP3 MSTORE PUSH2 0x3CC CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 CALLDATASIZE PUSH1 0x63 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3E9 DUP2 PUSH2 0x118C JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP2 MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0x40 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP4 PUSH2 0x44D SWAP2 PUSH1 0x80 PUSH2 0x479 SWAP7 ADD MSTORE PUSH2 0x182B JUMP JUMPDEST PUSH2 0x455 PUSH2 0x167A JUMP JUMPDEST PUSH2 0x45E CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH2 0x467 DUP3 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0x471 DUP2 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP3 PUSH2 0x1AB5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x494 PUSH2 0x172D JUMP JUMPDEST POP PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH2 0x4C2 PUSH2 0x4AE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x4F1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x4FA DUP2 PUSH2 0x156F JUMP JUMPDEST PUSH0 SWAP3 SWAP1 SWAP2 PUSH0 NOT DUP2 ADD SWAP2 CALLVALUE SWAP2 DUP6 JUMPDEST DUP2 DUP2 LT PUSH2 0x527 JUMPI PUSH2 0x4C2 PUSH2 0x51B DUP9 DUP9 PUSH2 0x2BF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1012 JUMP JUMPDEST PUSH2 0x536 DUP2 DUP4 DUP6 SWAP9 SWAP7 SWAP8 SWAP9 PUSH2 0x1120 JUMP JUMPDEST SWAP7 PUSH2 0x544 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x15DA JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP4 ISZERO DUP1 ISZERO PUSH2 0x6A1 JUMPI JUMPDEST PUSH2 0x692 JUMPI DUP10 SWAP7 PUSH0 SWAP9 SWAP6 SWAP9 SWAP6 PUSH1 0x40 DUP10 ADD SWAP6 PUSH1 0x60 DUP11 ADD SWAP11 PUSH1 0x80 DUP12 CALLDATALOAD SWAP12 ADD CALLDATALOAD SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP12 AND DUP1 SWAP12 EQ ISZERO SWAP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x624 JUMPI DUP16 SWAP1 PUSH2 0x5A0 DUP12 PUSH2 0x59A DUP4 PUSH1 0x5 SHL DUP14 ADD DUP14 PUSH2 0x1546 JUMP JUMPDEST SWAP4 PUSH2 0x16F8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x610 JUMPI DUP16 PUSH2 0x5B2 DUP15 SWAP2 PUSH2 0x155B JUMP JUMPDEST SWAP1 PUSH2 0x1B4 JUMPI DUP16 SWAP1 DUP16 SWAP1 PUSH2 0x5EF PUSH2 0x60A SWAP5 PUSH2 0x5DE PUSH1 0x1 SWAP9 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x5D5 DUP9 PUSH2 0x1142 JUMP JUMPDEST DUP8 MSTORE CALLDATASIZE SWAP1 PUSH2 0x1425 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE CALLDATASIZE SWAP1 PUSH1 0x60 DUP9 MUL ADD PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE DUP6 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1F26 JUMP JUMPDEST ADD PUSH2 0x57D JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP11 DUP14 SWAP15 POP DUP4 SWAP11 POP PUSH2 0x660 SWAP5 SWAP13 SWAP4 SWAP3 SWAP2 SWAP10 POP PUSH1 0x1 SWAP9 POP PUSH2 0x65A PUSH2 0x669 SWAP7 SWAP9 DUP9 SWAP16 PUSH2 0x652 SWAP1 PUSH1 0x20 SWAP11 EQ SWAP7 PUSH2 0x155B JUMP JUMPDEST SWAP4 CALLDATASIZE SWAP2 PUSH2 0x160F JUMP JUMPDEST SWAP1 PUSH2 0x263A JUMP JUMPDEST SWAP6 DUP7 MLOAD SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP5 ADD DUP1 MLOAD PUSH2 0x677 DUP10 DUP10 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x682 DUP9 DUP9 PUSH2 0x130C JUMP JUMPDEST POP MLOAD MLOAD ADD SWAP7 SWAP5 SWAP6 SWAP3 SWAP4 SWAP3 ADD PUSH2 0x507 JUMP JUMPDEST PUSH4 0x251F56A1 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH2 0x6AF PUSH1 0x40 DUP12 ADD DUP12 PUSH2 0x16F8 JUMP JUMPDEST SWAP1 POP DUP5 EQ ISZERO PUSH2 0x550 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x758 PUSH2 0x6F5 PUSH32 0x0 PUSH2 0x345B JUMP JUMPDEST PUSH2 0x4C2 PUSH2 0x721 PUSH32 0x0 PUSH2 0x34BA JUMP JUMPDEST PUSH2 0x766 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x733 PUSH1 0x20 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH0 DUP4 MSTORE PUSH0 CALLDATASIZE DUP2 CALLDATACOPY PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0xF PUSH1 0xF8 SHL DUP8 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0xFC4 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x104B JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD CALLER PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 DUP2 DUP2 GT ISZERO PUSH2 0x7EF JUMPI PUSH32 0x57B09AF877DF9068FD60A69D7B21F5576B8B38955812D6AE4AC52942F1E38FB7 SWAP2 PUSH1 0x40 SWAP2 CALLER PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 DUP4 PUSH0 KECCAK256 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH4 0x3AB3447F PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x4C2 PUSH1 0x20 PUSH2 0x8EC PUSH1 0x1 PUSH2 0x841 PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST DUP2 DUP5 PUSH2 0x86C PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST DUP2 DUP1 PUSH2 0x897 PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP10 DUP8 DUP12 SWAP9 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP11 ADD MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH2 0x216 DUP2 PUSH1 0x4 CALLDATALOAD PUSH2 0x2C61 JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x954 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP2 SWAP1 PUSH0 SWAP1 CALLVALUE JUMPDEST DUP2 DUP4 LT PUSH2 0x967 JUMPI STOP JUMPDEST PUSH2 0x972 DUP4 DUP4 DUP7 PUSH2 0x15B8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x1E NOT DUP3 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x1B4 JUMPI DUP2 ADD SWAP2 DUP3 CALLDATALOAD SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP3 DUP1 PUSH1 0x6 SHL CALLDATASIZE SUB DUP5 SGT PUSH2 0x1B4 JUMPI PUSH1 0x1 SWAP4 DUP3 PUSH2 0x9CC SWAP3 PUSH2 0x9D2 SWAP6 PUSH2 0x9C5 DUP13 DUP12 EQ SWAP5 CALLER SWAP4 CALLDATASIZE SWAP2 PUSH2 0x123E JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x1CE0 JUMP JUMPDEST SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x95E JUMP JUMPDEST PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x479 PUSH2 0x9F1 PUSH2 0x167A JUMP JUMPDEST PUSH2 0x9FA CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH2 0xA03 DUP3 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0xA0D DUP2 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP1 CALLER SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x1AB5 JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xA45 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH2 0xA4F DUP3 PUSH2 0x156F JUMP JUMPDEST SWAP2 PUSH0 SWAP2 CALLVALUE SWAP1 PUSH0 SWAP3 PUSH0 NOT DUP2 ADD SWAP1 JUMPDEST DUP1 DUP6 LT PUSH2 0xA70 JUMPI PUSH2 0x4C2 PUSH2 0x51B DUP8 DUP10 PUSH2 0x2BF9 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH2 0xA80 DUP7 DUP4 DUP7 PUSH2 0x15B8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 ADD SWAP2 PUSH2 0xA90 DUP4 DUP3 PUSH2 0x15DA JUMP JUMPDEST SWAP1 POP ISZERO PUSH2 0x692 JUMPI PUSH2 0xAD0 PUSH2 0xAC7 DUP10 DUP10 DUP9 DUP6 PUSH2 0xAC0 PUSH2 0xAB2 PUSH1 0x1 SWAP11 PUSH1 0x20 SWAP10 PUSH2 0x15DA JUMP JUMPDEST SWAP4 SWAP1 SWAP6 EQ SWAP5 CALLER SWAP4 CALLDATASIZE SWAP2 PUSH2 0x160F JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x263A JUMP JUMPDEST SWAP8 DUP9 MLOAD SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP7 ADD DUP1 MLOAD PUSH2 0xADE DUP10 DUP12 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0xAE9 DUP9 DUP11 PUSH2 0x130C JUMP JUMPDEST POP MLOAD MLOAD ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA5C JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x4 ADD SWAP1 PUSH1 0xE0 PUSH1 0x3 NOT DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0xB34 DUP2 PUSH2 0x1142 JUMP JUMPDEST DUP3 CALLDATALOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x24 DUP4 ADD SWAP4 DUP5 CALLDATALOAD SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 GT PUSH2 0x1B4 JUMPI PUSH2 0xBE0 PUSH2 0x1AB SWAP6 PUSH2 0xBC7 PUSH2 0x1A4 SWAP6 PUSH2 0xBB4 PUSH1 0x20 SWAP11 SWAP9 PUSH2 0xB76 DUP13 SWAP11 PUSH1 0x4 CALLDATASIZE SWAP2 DUP9 ADD ADD PUSH2 0x1425 JUMP JUMPDEST DUP11 DUP3 ADD MSTORE PUSH2 0xB87 CALLDATASIZE PUSH1 0x44 DUP8 ADD PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xBAA PUSH1 0xC4 PUSH1 0xA4 DUP8 ADD SWAP7 PUSH2 0xB9F DUP9 PUSH2 0xFFE JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE ADD PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1F26 JUMP JUMPDEST PUSH2 0x181 PUSH2 0xBBF PUSH2 0x14E1 JUMP JUMPDEST SWAP6 CALLDATASIZE SWAP3 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0xBD0 DUP5 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0xBDA DUP4 PUSH2 0x12FF JUMP JUMPDEST POP PUSH2 0x155B JUMP JUMPDEST SWAP1 CALLVALUE SWAP3 PUSH2 0x2067 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC09 PUSH2 0xFE8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH0 PUSH1 0x2 SLOAD PUSH2 0xC40 DUP2 PUSH2 0x1351 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0xCC6 JUMPI POP PUSH1 0x1 EQ PUSH2 0xC68 JUMPI JUMPDEST PUSH2 0x4C2 DUP4 PUSH2 0x8EC DUP2 DUP6 SUB DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x2 PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE SWAP4 SWAP3 POP SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0xCAC JUMPI POP SWAP1 SWAP2 POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x8EC PUSH2 0xC58 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP3 SWAP2 PUSH2 0xC94 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x5 SHL DUP5 ADD SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x8EC SWAP1 POP PUSH2 0xC58 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xD1A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xD3A JUMPI PUSH1 0x20 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH2 0xD53 DUP6 PUSH2 0xD4C PUSH1 0x1 SWAP5 DUP7 DUP9 PUSH2 0x1341 JUMP JUMPDEST CALLDATALOAD CALLER PUSH2 0x1EA2 JUMP JUMPDEST ADD PUSH2 0xD28 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xFEB2925A02BAE3DAE48D424A0437A2B6AC939AA9230DDC55A1A76F065D988076 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xDBE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP2 PUSH0 SWAP2 CALLVALUE JUMPDEST DUP2 DUP5 LT PUSH2 0xDD0 JUMPI STOP JUMPDEST PUSH2 0xDDB DUP5 DUP4 DUP6 PUSH2 0x1120 JUMP JUMPDEST PUSH1 0xA0 DUP2 CALLDATASIZE SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0xDF1 DUP2 PUSH2 0x1142 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP3 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0xE26 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x20 DUP2 CALLDATALOAD SWAP2 ADD PUSH2 0x123E JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP4 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0xE5A DUP3 PUSH2 0x11FF JUMP JUMPDEST SWAP2 PUSH2 0xE68 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 PUSH1 0x60 DUP2 DUP6 ADD SWAP3 MUL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF7A JUMPI POP POP POP PUSH1 0x40 DUP3 ADD DUP2 DUP2 MSTORE PUSH2 0xEB4 PUSH1 0x80 PUSH2 0xEA6 PUSH1 0x60 DUP9 ADD PUSH2 0xFFE JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP7 ADD SWAP8 DUP9 MSTORE ADD PUSH2 0x12EB JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP5 ADD SWAP5 DUP6 MSTORE MLOAD SWAP4 DUP5 MLOAD SWAP3 DUP4 ISZERO SWAP1 DUP2 ISZERO PUSH2 0xF6E JUMPI JUMPDEST POP PUSH2 0x692 JUMPI PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xF0B JUMPI POP POP SWAP2 MLOAD SWAP4 MLOAD PUSH1 0x1 SWAP6 PUSH2 0xF03 SWAP6 SWAP1 SWAP5 PUSH2 0x9CC SWAP5 POP DUP11 DUP13 EQ SWAP4 POP DUP6 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x1CE0 JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0xF68 DUP7 MLOAD PUSH2 0xF1D DUP4 DUP11 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0xF29 DUP5 DUP9 MLOAD PUSH2 0x130C JUMP JUMPDEST MLOAD DUP6 DUP1 PUSH1 0xA0 SHL SUB DUP13 MLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 MLOAD AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0xF4D DUP7 PUSH2 0x1142 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x182B JUMP JUMPDEST ADD PUSH2 0xED2 JUMP JUMPDEST SWAP1 POP MLOAD DUP4 EQ ISZERO DUP13 PUSH2 0xECB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x60 SWAP2 PUSH2 0xF89 CALLDATASIZE DUP6 PUSH2 0x12AD JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xE84 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x1B4 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1035 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1028 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1068 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x105B JUMP JUMPDEST SWAP1 PUSH2 0x140 PUSH2 0x120 PUSH2 0x111D SWAP4 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP3 ADD MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0xC0 DUP3 ADD MLOAD AND PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0xE0 DUP3 ADD MLOAD AND PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE ADD MLOAD SWAP2 DUP2 PUSH2 0x120 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x9E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x23 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x122F DUP3 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x124A DUP3 PUSH2 0x11FF JUMP JUMPDEST SWAP4 PUSH2 0x1258 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP6 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x6 SHL DUP3 ADD SWAP2 DUP2 DUP4 GT PUSH2 0x1B4 JUMPI SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x127C JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP5 DUP4 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 SWAP2 DUP3 MLOAD PUSH2 0x1296 DUP2 PUSH2 0x1171 JUMP JUMPDEST DUP7 CALLDATALOAD DUP2 MSTORE DUP3 DUP8 ADD CALLDATALOAD DUP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x126F JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x12C5 DUP2 PUSH2 0x118C JUMP JUMPDEST DUP1 SWAP3 DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 SWAP2 DUP3 SWAP2 DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x610 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x132D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x137F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x136B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1360 JUMP JUMPDEST PUSH0 SWAP3 SWAP2 DUP2 SLOAD SWAP2 PUSH2 0x1398 DUP4 PUSH2 0x1351 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x13ED JUMPI POP PUSH1 0x1 EQ PUSH2 0x13B4 JUMPI POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 SWAP4 SWAP5 POP SWAP2 SWAP3 JUMPDEST DUP4 DUP4 LT PUSH2 0x13D3 JUMPI POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP5 SWAP4 SWAP5 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP2 SWAP1 PUSH2 0x13C2 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xC0 DUP4 DUP3 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x143E DUP3 PUSH2 0x11A7 JUMP JUMPDEST DUP2 SWAP4 PUSH2 0x1449 DUP2 PUSH2 0xFFE JUMP JUMPDEST DUP4 MSTORE PUSH2 0x1457 PUSH1 0x20 DUP3 ADD PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP2 ADD SWAP1 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP2 CALLDATALOAD SWAP3 PUSH2 0x14A6 DUP5 PUSH2 0x140A JUMP JUMPDEST SWAP1 PUSH2 0x14B4 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x20 DUP6 DUP6 ADD ADD GT PUSH2 0x1B4 JUMPI PUSH0 PUSH1 0x20 DUP6 PUSH1 0xA0 SWAP7 DUP3 DUP9 SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x14F2 DUP4 DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE SWAP2 PUSH1 0x1F NOT ADD DUP3 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x150A JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x1519 DUP2 PUSH2 0x11A7 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x14FE JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0xBE NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1579 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x1586 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x1597 PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x15A7 JUMPI POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP6 ADD ADD MSTORE ADD PUSH2 0x159B JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x3E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x1B4 JUMPI JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x161B DUP2 PUSH2 0x11FF JUMP JUMPDEST SWAP4 PUSH2 0x1629 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP6 DUP4 DUP2 MSTORE ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x1B4 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x164F JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x166F DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x1425 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x168B DUP4 DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE SWAP2 PUSH1 0x1F NOT ADD DUP3 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x16A3 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x16B2 DUP2 PUSH2 0x1171 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x1697 JUMP JUMPDEST SWAP1 PUSH2 0x16D0 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x16DD PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x16EE PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP2 PUSH1 0x60 DUP3 MUL CALLDATASIZE SUB DUP4 SGT PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x173A DUP3 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x120 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH0 PUSH1 0xC0 DUP3 ADD MSTORE PUSH0 PUSH1 0xE0 DUP3 ADD MSTORE PUSH0 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x6 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x1789 DUP2 PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0x1819 DUP2 SWAP6 DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x2 DUP3 ADD SLOAD DUP2 DUP2 AND PUSH1 0x40 DUP7 ADD MSTORE DUP2 DUP2 PUSH1 0x40 SHR AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 SHR AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x4 DUP3 ADD SLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0xA0 SHR AND ISZERO ISZERO PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1812 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP4 ADD PUSH2 0x1389 JUMP JUMPDEST SUB DUP5 PUSH2 0x11DE JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH0 NOT DUP2 EQ PUSH2 0x132D JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x1973 JUMPI JUMPDEST POP PUSH2 0x1964 JUMPI DUP2 PUSH2 0x18FD PUSH1 0x20 PUSH2 0x194E SWAP5 ADD MLOAD SWAP2 PUSH1 0x40 DUP2 ADD MLOAD SWAP4 PUSH1 0x60 DUP3 ADD SWAP4 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP3 MLOAD SWAP2 PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD DUP5 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SWAP3 DUP4 SLOAD SWAP4 PUSH2 0x1896 DUP6 PUSH2 0x181D JUMP JUMPDEST SWAP1 SSTORE MLOAD AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH1 0x20 DUP7 ADD SWAP7 PUSH32 0xB5D556F07587EC0F08CF386545CC4362C702A001650C2058002615EE5C9D1E75 DUP9 MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 MSTORE PUSH2 0x18F5 PUSH2 0x100 DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x2F5C JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x20 DUP4 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP6 MLOAD DUP2 MLOAD SWAP4 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xF8 SWAP4 SWAP1 SWAP4 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x41 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1949 PUSH1 0x61 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH2 0x2F82 JUMP JUMPDEST ISZERO PUSH2 0x1955 JUMPI JUMP JUMPDEST PUSH4 0x8BAA579F PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x1AB7DA6B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND GT PUSH0 PUSH2 0x1844 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x1B4 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI ADD SWAP1 PUSH1 0x80 DUP3 DUP3 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x80 DUP4 ADD DUP4 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1A01 PUSH1 0x40 DUP3 ADD PUSH2 0x1986 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1A32 DUP3 PUSH2 0x140A JUMP JUMPDEST SWAP3 PUSH2 0x1A40 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x1B4 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A70 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x1A7D PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x1A8E PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1A9E JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x1AA9 PUSH2 0x172D JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x1A92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP3 PUSH2 0x1CB1 JUMPI JUMPDEST POP DUP2 MLOAD ISZERO PUSH2 0x1C93 JUMPI DUP1 MLOAD PUSH2 0x1B1D DUP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP4 PUSH2 0x1B27 DUP3 PUSH2 0x16C6 JUMP JUMPDEST SWAP6 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1B50 JUMPI POP POP POP POP POP POP SWAP2 PUSH2 0x111D SWAP4 SWAP2 PUSH1 0x1 SWAP4 PUSH2 0x30CA JUMP JUMPDEST PUSH2 0x1B5A DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP1 DUP2 MLOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD ISZERO PUSH2 0x1CA2 JUMPI DUP6 PUSH1 0x1 DUP5 ADD SLOAD SUB PUSH2 0x1C93 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 SWAP1 DUP2 AND DUP3 SWAP1 SUB PUSH2 0x1C84 JUMPI PUSH1 0xA0 SHR PUSH1 0xFF AND ISZERO PUSH2 0x1C75 JUMPI PUSH1 0x2 DUP5 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 SLOAD PUSH1 0x80 SHR AND PUSH2 0x1C66 JUMPI DUP3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x80 DUP12 SWAP1 SHL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP4 DUP8 SWAP3 SWAP1 DUP13 SWAP1 PUSH2 0x1C01 SWAP1 DUP7 SWAP1 PUSH2 0x1BFB SWAP1 PUSH2 0x1777 JUMP JUMPDEST PUSH2 0x1777 JUMP JUMPDEST SWAP3 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x1C0C DUP5 DUP14 PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x1C1C DUP6 DUP16 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH32 0xF930A6E2523C9CC298691873087A740550B8FC85A0680830414C148ED927F615 PUSH1 0x20 DUP14 PUSH1 0xC0 PUSH2 0x1C53 DUP9 DUP11 DUP1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x130C JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 ADD PUSH2 0x1B35 JUMP JUMPDEST PUSH4 0x905E7107 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x157BD4C3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4CA88867 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x5F9BD907 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xC5723B51 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1CCE SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1993 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x1E88 JUMPI JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x1C93 JUMPI DUP7 MLOAD PUSH2 0x1D4C DUP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP3 PUSH2 0x1D56 DUP3 PUSH2 0x16C6 JUMP JUMPDEST SWAP5 PUSH0 SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP11 JUMPDEST DUP5 DUP2 LT PUSH2 0x1D7C JUMPI POP POP POP POP POP PUSH2 0x111D SWAP6 SWAP7 POP PUSH2 0x30CA JUMP JUMPDEST PUSH2 0x1D86 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP1 DUP2 MLOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD ISZERO PUSH2 0x1CA2 JUMPI DUP6 PUSH1 0x1 DUP5 ADD SLOAD SUB PUSH2 0x1C93 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 SWAP1 DUP2 AND DUP3 SWAP1 SUB PUSH2 0x1C84 JUMPI PUSH1 0xA0 SHR PUSH1 0xFF AND ISZERO PUSH2 0x1C75 JUMPI PUSH1 0x2 DUP5 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 SLOAD PUSH1 0x80 SHR AND PUSH2 0x1C66 JUMPI DUP16 PUSH1 0x1 SWAP6 PUSH2 0x1BF6 PUSH2 0x1E19 SWAP3 DUP12 SWAP7 SWAP1 DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1E23 DUP6 DUP14 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x1E2E DUP5 DUP13 PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x1E3E DUP6 DUP15 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH32 0xF930A6E2523C9CC298691873087A740550B8FC85A0680830414C148ED927F615 PUSH1 0x20 DUP13 PUSH1 0xC0 PUSH2 0x1E75 DUP9 DUP11 DUP1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x130C JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 ADD PUSH2 0x1D65 JUMP JUMPDEST PUSH2 0x1E9C SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST PUSH0 PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH2 0x1F17 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP4 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 AND DUP4 NOT DUP3 SLOAD AND OR SWAP1 SSTORE AND SWAP2 PUSH32 0x92A1F7A41A7C585A8B09E25B195E225B1D43248DACA46B0FAF9E0792777A2229 PUSH0 DUP1 LOG4 JUMP JUMPDEST PUSH4 0xEC9D6EEB PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x203B JUMPI JUMPDEST POP PUSH2 0x1964 JUMPI DUP2 PUSH2 0x18FD PUSH1 0x20 PUSH2 0x194E SWAP5 ADD MLOAD SWAP2 PUSH1 0x40 DUP2 ADD MLOAD SWAP4 PUSH1 0x60 DUP3 ADD SWAP4 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP3 MLOAD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND SWAP1 PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP3 ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 ADD MLOAD SWAP4 DUP9 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SWAP7 DUP8 SLOAD SWAP8 PUSH2 0x1FC3 DUP10 PUSH2 0x181D JUMP JUMPDEST SWAP1 SSTORE MLOAD AND SWAP7 PUSH1 0x40 MLOAD SWAP9 PUSH1 0x20 DUP11 ADD SWAP11 PUSH32 0xFEB2925A02BAE3DAE48D424A0437A2B6AC939AA9230DDC55A1A76F065D988076 DUP13 MSTORE PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x160 DUP2 MSTORE PUSH2 0x18F5 PUSH2 0x180 DUP3 PUSH2 0x11DE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND GT PUSH0 PUSH2 0x1F3F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x205B DUP3 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 DUP4 PUSH0 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0xE0 MSTORE PUSH2 0x2074 PUSH2 0x204E JUMP JUMPDEST POP DUP1 MLOAD SWAP1 PUSH2 0x2080 PUSH2 0x204E JUMP JUMPDEST PUSH2 0x100 MSTORE PUSH2 0x208D DUP3 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL DUP1 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 PUSH1 0x80 MSTORE PUSH2 0x261E JUMPI JUMPDEST POP PUSH1 0x80 MLOAD MLOAD ISZERO PUSH2 0x1C93 JUMPI SWAP1 SWAP2 PUSH2 0x20FE DUP4 PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH2 0x210A DUP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x213E JUMPI POP POP POP POP POP PUSH2 0x2132 PUSH1 0x1 PUSH1 0xE0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x80 MLOAD PUSH2 0x32B4 JUMP JUMPDEST PUSH2 0x100 MLOAD MSTORE PUSH2 0x100 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x214E DUP4 DUP3 SWAP8 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x260A JUMPI JUMPDEST POP PUSH2 0x25FB JUMPI PUSH1 0x40 PUSH1 0x80 MLOAD ADD MLOAD ISZERO DUP1 PUSH2 0x25EE JUMPI JUMPDEST PUSH2 0x1C75 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP6 ADD MLOAD SWAP8 MLOAD AND SWAP7 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND PUSH1 0x40 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 PUSH1 0x80 DUP8 ADD MLOAD SWAP3 PUSH1 0x40 MLOAD SWAP11 PUSH2 0x21B7 DUP13 PUSH2 0x11C2 JUMP JUMPDEST PUSH0 DUP13 MSTORE DUP10 PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH1 0x40 DUP14 ADD MSTORE PUSH1 0x60 DUP13 ADD MSTORE PUSH0 PUSH1 0x80 DUP13 ADD MSTORE PUSH1 0xA0 DUP12 ADD MSTORE PUSH1 0xC0 DUP11 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0xE0 DUP11 ADD MSTORE PUSH2 0x100 DUP10 ADD MSTORE PUSH2 0x120 DUP9 ADD MSTORE PUSH0 JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD DUP9 PUSH2 0x22D0 PUSH1 0x4 PUSH1 0x99 PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x20 PUSH1 0xE0 DUP7 ADD MLOAD SWAP6 PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 PUSH2 0x120 PUSH1 0xA0 DUP5 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP8 DUP8 DUP10 ADD SWAP14 DUP15 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x54 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x68 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x70 DUP7 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x78 DUP6 ADD MSTORE PUSH1 0x79 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP5 ADD MCOPY DUP2 ADD PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP9 PUSH1 0xE0 SHL AND DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1B NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH2 0x22F4 JUMPI POP PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND PUSH2 0x2200 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 SWAP1 SWAP5 SWAP6 SWAP2 SWAP8 SWAP4 SWAP3 SWAP4 DUP1 DUP3 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP1 MLOAD DUP4 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE PUSH2 0x23A2 PUSH1 0x2 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT DUP3 SLOAD AND OR DUP2 SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL DUP3 SLOAD SWAP2 PUSH1 0x40 SHL AND SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP5 ADD MLOAD AND DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 ADD MLOAD PUSH1 0x3 DUP6 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH2 0x100 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ISZERO ISZERO SWAP1 SWAP3 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE PUSH2 0x120 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI DUP10 SWAP5 PUSH2 0x242C PUSH1 0x6 DUP5 ADD SLOAD PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2596 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x2528 JUMPI PUSH1 0x6 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x251D JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 PUSH2 0x24F9 JUMPI JUMPDEST POP SWAP4 PUSH1 0x1 SWAP5 PUSH2 0x2481 DUP6 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x248E DUP5 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x24A0 DUP6 PUSH1 0xC0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP2 PUSH2 0x24B3 DUP6 PUSH1 0x20 PUSH2 0x100 MLOAD ADD MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP5 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x8BF46BF4CFD674FA735A3D63EC1C9AD4153F033C290341F3A588B75685141B35 PUSH1 0x20 DUP7 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 LOG4 ADD SWAP2 SWAP3 SWAP1 PUSH2 0x2110 JUMP JUMPDEST PUSH2 0x2510 SWAP2 SWAP4 POP PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CA2 JUMPI DUP7 SWAP2 PUSH0 PUSH2 0x2470 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2450 JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP5 ADD PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH2 0x257B JUMPI POP SWAP2 DUP4 SWAP2 PUSH1 0x1 SWAP4 PUSH1 0x6 SWAP6 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x2563 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP2 ADD SSTORE PUSH2 0x2465 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2555 JUMP JUMPDEST DUP2 DUP4 ADD MLOAD DUP5 SSTORE DUP14 SWAP9 POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2535 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 POP PUSH1 0x6 DUP5 ADD PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x25E7 JUMPI JUMPDEST SWAP1 DUP13 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x25D9 JUMPI POP POP PUSH2 0x2435 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP14 SWAP9 POP PUSH1 0x1 ADD PUSH2 0x25C3 JUMP JUMPDEST POP DUP1 PUSH2 0x25B9 JUMP JUMPDEST POP PUSH1 0x40 DUP5 ADD MLOAD ISZERO ISZERO PUSH2 0x217D JUMP JUMPDEST PUSH4 0x8E8B937 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND LT ISZERO PUSH0 PUSH2 0x216A JUMP JUMPDEST PUSH2 0x2631 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH0 PUSH2 0x20E9 JUMP JUMPDEST SWAP2 SWAP3 SWAP4 SWAP1 SWAP4 PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x264D PUSH2 0x204E JUMP JUMPDEST POP DUP3 MLOAD SWAP1 PUSH2 0x2659 PUSH2 0x204E JUMP JUMPDEST PUSH2 0x100 MSTORE PUSH2 0x2666 DUP3 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 DUP6 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP6 PUSH2 0x2BDD JUMPI JUMPDEST POP DUP5 MLOAD ISZERO PUSH2 0x1C93 JUMPI SWAP1 PUSH2 0x26D4 DUP4 PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH2 0x26E0 DUP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x270B JUMPI POP POP POP POP POP PUSH2 0x2132 SWAP1 PUSH1 0xE0 MLOAD SWAP1 PUSH1 0xC0 MLOAD SWAP1 PUSH1 0xA0 MLOAD SWAP1 PUSH1 0x80 MLOAD SWAP1 PUSH2 0x32B4 JUMP JUMPDEST SWAP1 SWAP3 SWAP5 SWAP2 SWAP4 SWAP6 PUSH2 0x271B DUP6 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x2BC9 JUMPI JUMPDEST POP PUSH2 0x25FB JUMPI PUSH1 0x40 DUP3 ADD MLOAD ISZERO DUP1 PUSH2 0x2BBC JUMPI JUMPDEST PUSH2 0x1C75 JUMPI PUSH1 0x60 DUP6 ADD MLOAD SWAP8 MLOAD DUP6 MLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD SWAP2 MLOAD SWAP12 SWAP2 SWAP4 SWAP1 ISZERO ISZERO SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP11 PUSH1 0x20 DUP15 PUSH2 0x278A DUP2 PUSH2 0x11C2 JUMP JUMPDEST PUSH0 DUP2 MSTORE ADD MSTORE DUP13 PUSH1 0x40 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 ADD MSTORE PUSH1 0x60 DUP14 ADD MSTORE PUSH0 PUSH1 0x80 DUP14 ADD MSTORE PUSH1 0xA0 DUP13 ADD MSTORE PUSH1 0xC0 DUP12 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0xE0 DUP12 ADD MSTORE PUSH2 0x100 DUP11 ADD MSTORE PUSH2 0x120 DUP10 ADD MSTORE PUSH0 JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD DUP10 PUSH2 0x28A0 PUSH1 0x4 PUSH1 0x99 PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x20 PUSH1 0xE0 DUP7 ADD MLOAD SWAP6 PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 PUSH2 0x120 PUSH1 0xA0 DUP5 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP8 DUP8 DUP10 ADD SWAP14 DUP15 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x54 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x68 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x70 DUP7 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x78 DUP6 ADD MSTORE PUSH1 0x79 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP5 ADD MCOPY DUP2 ADD PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP9 PUSH1 0xE0 SHL AND DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1B NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH2 0x28C4 JUMPI POP PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND PUSH2 0x27D0 JUMP JUMPDEST SWAP1 POP SWAP9 SWAP7 SWAP2 SWAP8 SWAP1 SWAP6 SWAP5 SWAP3 SWAP9 DUP1 DUP3 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP1 MLOAD DUP4 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE PUSH2 0x2971 PUSH1 0x2 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT DUP3 SLOAD AND OR DUP2 SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL DUP3 SLOAD SWAP2 PUSH1 0x40 SHL AND SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP5 ADD MLOAD AND DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 ADD MLOAD PUSH1 0x3 DUP6 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH2 0x100 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ISZERO ISZERO SWAP1 SWAP3 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE PUSH2 0x120 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI DUP9 SWAP5 PUSH2 0x29FB PUSH1 0x6 DUP5 ADD SLOAD PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2B64 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x2AF6 JUMPI PUSH1 0x6 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x2AEB JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 PUSH2 0x2AC7 JUMPI JUMPDEST POP SWAP4 PUSH1 0x1 SWAP5 PUSH2 0x2A50 DUP6 PUSH1 0x80 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x2A5D DUP5 PUSH1 0x80 MLOAD PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x2A6F DUP6 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP2 PUSH2 0x2A82 DUP6 PUSH1 0x20 PUSH2 0x100 MLOAD ADD MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP5 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x8BF46BF4CFD674FA735A3D63EC1C9AD4153F033C290341F3A588B75685141B35 PUSH1 0x20 DUP7 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 LOG4 ADD SWAP2 SWAP1 PUSH2 0x26E6 JUMP JUMPDEST PUSH2 0x2ADE SWAP2 SWAP4 POP PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CA2 JUMPI DUP6 SWAP2 PUSH0 PUSH2 0x2A3F JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2A1F JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP5 ADD PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH2 0x2B49 JUMPI POP SWAP2 DUP4 SWAP2 PUSH1 0x1 SWAP4 PUSH1 0x6 SWAP6 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x2B31 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP2 ADD SSTORE PUSH2 0x2A34 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2B23 JUMP JUMPDEST DUP2 DUP4 ADD MLOAD DUP5 SSTORE DUP13 SWAP9 POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2B03 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 POP PUSH1 0x6 DUP5 ADD PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x2BB5 JUMPI JUMPDEST SWAP1 DUP12 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x2BA7 JUMPI POP POP PUSH2 0x2A04 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP13 SWAP9 POP PUSH1 0x1 ADD PUSH2 0x2B91 JUMP JUMPDEST POP DUP1 PUSH2 0x2B87 JUMP JUMPDEST POP PUSH1 0x40 DUP6 ADD MLOAD ISZERO ISZERO PUSH2 0x2748 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND LT ISZERO PUSH0 PUSH2 0x2737 JUMP JUMPDEST PUSH2 0x2BF2 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST SWAP4 PUSH0 PUSH2 0x26C2 JUMP JUMPDEST SWAP1 PUSH2 0x2C03 SWAP1 PUSH2 0x16C6 JUMP JUMPDEST SWAP1 PUSH0 DUP2 MLOAD SWAP2 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x2C18 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2C22 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 MLOAD PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x2C3A JUMPI POP POP POP PUSH1 0x1 ADD PUSH2 0x2C0A JUMP JUMPDEST SWAP1 SWAP2 SWAP5 PUSH1 0x1 DUP1 SWAP2 PUSH2 0x2C4B DUP9 DUP6 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x2C56 DUP3 DUP13 PUSH2 0x130C JUMP JUMPDEST MSTORE ADD SWAP6 ADD SWAP2 SWAP1 PUSH2 0x2C28 JUMP JUMPDEST SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH2 0x2CC4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP3 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 AND DUP4 NOT DUP3 SLOAD AND OR SWAP1 SSTORE AND SWAP1 PUSH32 0x5AAFCEEB1C7AD58E4A84898BDEE37C02C0FC46E7D24E6B60E8209449F183459F PUSH0 DUP1 LOG3 JUMP JUMPDEST PUSH4 0x17133CA3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x2E1D JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x2E02 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x2DEE JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x2DDD JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x2DCE JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x2DC0 JUMPI JUMPDEST LT ISZERO PUSH2 0x2DB5 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x2D5A DUP6 PUSH2 0x140A JUMP JUMPDEST SWAP5 PUSH2 0x2D68 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x11DE JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x2D77 PUSH1 0x1F NOT SWAP2 PUSH2 0x140A JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x2DB0 JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x2D82 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2D48 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D41 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D37 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D2C JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D1F JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x2CF5 JUMP JUMPDEST ADDRESS PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2F33 JUMPI JUMPDEST ISZERO PUSH2 0x2E9B JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x2F2D PUSH1 0xC0 DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x2E72 JUMP JUMPDEST PUSH1 0x42 SWAP1 PUSH2 0x2F67 PUSH2 0x2E40 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1901 PUSH1 0xF0 SHL DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 EXTCODESIZE PUSH2 0x2FD1 JUMPI SWAP1 PUSH2 0x2F94 SWAP2 PUSH2 0x3520 JUMP JUMPDEST POP PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x2FBD JUMPI ISZERO SWAP2 DUP3 PUSH2 0x2FAA JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH0 SWAP3 PUSH2 0x3007 PUSH2 0x3015 DUP6 SWAP5 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD SWAP6 PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP8 MSTORE PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP2 GAS STATICCALL PUSH2 0x3021 PUSH2 0x34F1 JUMP JUMPDEST DUP2 PUSH2 0x304F JUMPI JUMPDEST DUP2 PUSH2 0x3030 JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 MLOAD LT ISZERO SWAP1 PUSH2 0x3027 JUMP JUMPDEST SWAP3 SWAP2 PUSH1 0x40 DUP5 ADD SWAP4 PUSH1 0x40 DUP2 MSTORE DUP3 MLOAD DUP1 SWAP6 MSTORE PUSH1 0x60 DUP2 ADD SWAP5 PUSH1 0x20 PUSH1 0x60 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x309F JUMPI POP POP POP PUSH2 0x111D SWAP4 SWAP5 POP PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x104B JUMP JUMPDEST SWAP1 SWAP2 SWAP5 PUSH1 0x20 DUP1 PUSH2 0x30BB PUSH1 0x1 SWAP4 PUSH1 0x5F NOT DUP9 DUP3 SUB ADD DUP13 MSTORE DUP10 MLOAD PUSH2 0x107E JUMP JUMPDEST SWAP8 ADD SWAP9 ADD SWAP2 ADD SWAP7 SWAP2 SWAP1 SWAP7 PUSH2 0x3082 JUMP JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP5 PUSH1 0x1 DUP7 EQ PUSH2 0x328E JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x324F JUMPI PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP7 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3215 JUMPI JUMPDEST POP SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x31B9 JUMPI POP POP POP SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x3147 SWAP4 DUP8 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH4 0x88E5B2D9 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x305D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x317F JUMPI JUMPDEST POP ISZERO PUSH2 0x3170 JUMPI PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x111D SWAP1 PUSH2 0x372E JUMP JUMPDEST PUSH4 0xBF2F3A8B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x31B1 JUMPI JUMPDEST DUP2 PUSH2 0x319A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x31AB SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3159 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x318D JUMP JUMPDEST SWAP1 SWAP2 SWAP8 SWAP7 PUSH2 0x31C7 DUP10 DUP8 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x320A JUMPI DUP3 ISZERO PUSH2 0x31FB JUMPI DUP2 DUP2 GT PUSH2 0x31EC JUMPI DUP1 PUSH1 0x1 SWAP3 SUB SWAP9 ADD SWAP9 JUMPDEST ADD SWAP2 SWAP1 PUSH2 0x3118 JUMP JUMPDEST PUSH4 0x44044A5 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x1574F9F3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP SWAP7 SWAP8 PUSH1 0x1 SWAP1 PUSH2 0x31E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3247 JUMPI JUMPDEST DUP2 PUSH2 0x3230 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3241 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3113 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3223 JUMP JUMPDEST POP POP PUSH0 SWAP4 SWAP2 SWAP3 SWAP4 JUMPDEST DUP3 DUP2 LT PUSH2 0x3277 JUMPI POP POP POP PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3273 SWAP1 PUSH2 0x372E JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3281 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x31FB JUMPI PUSH1 0x1 ADD PUSH2 0x3257 JUMP JUMPDEST SWAP1 PUSH2 0x111D SWAP6 POP SWAP2 PUSH2 0x32AD PUSH2 0x32A6 PUSH1 0x1 SWAP5 SWAP7 SWAP6 SWAP7 PUSH2 0x12FF JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x12FF JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x355A JUMP JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP5 PUSH1 0x1 DUP7 EQ PUSH2 0x3444 JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x3412 JUMPI PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP7 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x33D8 JUMPI JUMPDEST POP SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x339A JUMPI POP POP POP SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x3331 SWAP4 DUP8 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH4 0x48ED85BF PUSH1 0xE1 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x305D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3360 JUMPI JUMPDEST POP ISZERO PUSH2 0x3351 JUMPI PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH4 0xE8BEE839 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3392 JUMPI JUMPDEST DUP2 PUSH2 0x337B PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x338C SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3343 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x336E JUMP JUMPDEST SWAP1 SWAP2 SWAP8 SWAP7 PUSH2 0x33A8 DUP10 DUP8 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x33CD JUMPI DUP3 ISZERO PUSH2 0x31FB JUMPI DUP2 DUP2 GT PUSH2 0x31EC JUMPI DUP1 PUSH1 0x1 SWAP3 SUB SWAP9 ADD SWAP9 JUMPDEST ADD SWAP2 SWAP1 PUSH2 0x3302 JUMP JUMPDEST POP SWAP7 SWAP8 PUSH1 0x1 SWAP1 PUSH2 0x33C5 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x340A JUMPI JUMPDEST DUP2 PUSH2 0x33F3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3404 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x32FD JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x33E6 JUMP JUMPDEST POP POP PUSH0 SWAP4 SWAP2 SWAP3 SWAP4 JUMPDEST DUP3 DUP2 LT PUSH2 0x342D JUMPI POP POP POP PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3437 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x31FB JUMPI PUSH1 0x1 ADD PUSH2 0x341A JUMP JUMPDEST SWAP1 PUSH2 0x111D SWAP6 POP SWAP2 PUSH2 0x32AD PUSH2 0x32A6 PUSH0 SWAP5 SWAP7 SWAP6 SWAP7 PUSH2 0x12FF JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x34A1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x3492 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x347F PUSH1 0x40 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 CALLDATASIZE DUP4 CALLDATACOPY DUP4 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x2CD44AC3 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D DUP2 PUSH2 0x34B3 DUP2 PUSH0 PUSH2 0x1389 JUMP JUMPDEST SUB DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x34DE JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x3492 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x347F PUSH1 0x40 DUP5 PUSH2 0x11DE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D DUP2 PUSH2 0x34B3 DUP2 PUSH1 0x1 PUSH2 0x1389 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x351B JUMPI RETURNDATASIZE SWAP1 PUSH2 0x3502 DUP3 PUSH2 0x140A JUMP JUMPDEST SWAP2 PUSH2 0x3510 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST DUP2 MLOAD SWAP2 SWAP1 PUSH1 0x41 DUP4 SUB PUSH2 0x3550 JUMPI PUSH2 0x3549 SWAP3 POP PUSH1 0x20 DUP3 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP5 ADD MLOAD SWAP4 ADD MLOAD PUSH0 BYTE SWAP1 PUSH2 0x378A JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP2 PUSH1 0x2 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP2 SWAP5 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x371C JUMPI SWAP1 DUP6 SWAP3 SWAP2 DUP4 PUSH2 0x369F JUMPI JUMPDEST PUSH1 0x20 SWAP3 SWAP2 SWAP1 ISZERO PUSH2 0x3618 JUMPI PUSH2 0x35AE SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH4 0xE49617E1 PUSH1 0xE0 SHL DUP4 MSTORE DUP8 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x35DE JUMPI JUMPDEST POP ISZERO PUSH2 0x35CF JUMPI JUMPDEST PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH4 0xCCF3BB27 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3610 JUMPI JUMPDEST DUP2 PUSH2 0x35F9 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x360A SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x35C0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x35EC JUMP JUMPDEST PUSH2 0x363F SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH4 0xE60C3505 PUSH1 0xE0 SHL DUP4 MSTORE DUP8 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3665 JUMPI JUMPDEST POP PUSH2 0x35C7 JUMPI PUSH4 0xBD8BA84D PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3697 JUMPI JUMPDEST DUP2 PUSH2 0x3680 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3691 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3651 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3673 JUMP JUMPDEST SWAP5 SWAP2 SWAP1 SWAP3 POP PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x36E2 JUMPI JUMPDEST POP ISZERO PUSH2 0x31FB JUMPI DUP2 DUP7 GT PUSH2 0x31EC JUMPI SWAP1 DUP6 SWAP1 SUB SWAP4 DUP6 SWAP3 SWAP1 PUSH2 0x357D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3714 JUMPI JUMPDEST DUP2 PUSH2 0x36FD PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x370E SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x36C8 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x36F0 JUMP JUMPDEST POP POP POP SWAP1 SWAP2 PUSH2 0x31FB JUMPI PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x3736 JUMPI POP JUMP JUMPDEST DUP1 SELFBALANCE LT PUSH2 0x3774 JUMPI PUSH0 DUP1 DUP1 DUP1 SWAP4 CALLER GAS CALL PUSH2 0x374D PUSH2 0x34F1 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x3756 JUMPI POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3765 JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH4 0xD6BDA275 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SELFBALANCE PUSH4 0xCF479181 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x3801 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x1CD5 JUMPI PUSH0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x37F7 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0xE7D0784D1E2F31FE3051B5C9419341FC69728B5548377F2D9A8B661C25766C PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "169:89:26:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;169:89:26;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;169:89:26;;2476:1:1;759:14:6;;169:89:26;783:14:6;;-1:-1:-1;807:14:6;;3501:45:20;;;:::i;:::-;3493:53;;3567:51;;;:::i;:::-;3556:62;;169:89:26;;3642:22:20;;3628:36;;;;169:89:26;3691:25:20;;3674:42;;;3744:13;3727:30;;169:89:26;;4304:80:20;169:89:26;4304:80:20;;2079:95;;;;169:89:26;2079:95:20;;;;;;;3744:13;759:14:6;2079:95:20;;;4378:4;783:14:6;2079:95:20;;;783:14:6;4304:80:20;;;807:14:6;4304:80:20;;:::i;:::-;169:89:26;4294:91:20;;3767:48;;4378:4;3825:27;;169:89:26;;-1:-1:-1;;;;;169:89:26;;;;2163:12:7;169:89:26;2476:1:1;169:89:26;;;;;;;;;-1:-1:-1;169:89:26;;;;;;;;;;;-1:-1:-1;169:89:26;;;;;;;;;;;;;-1:-1:-1;169:89:26;;;;;;;2476:1:1;169:89:26;;;;;;;;;;;2163:12:7;169:89:26;;2531:31:1;2527:86;;2623:26;;169:89:26;;;;;;;;759:14:6;169:89:26;;;;;783:14:6;169:89:26;;;;;807:14:6;169:89:26;;;;;3767:48:20;169:89:26;;;;;3727:30:20;169:89:26;;;;;3825:27:20;169:89:26;;;;;3628:36:20;169:89:26;;;;;3674:42:20;169:89:26;;;;;3493:53:20;169:89:26;;;;;3556:62:20;169:89:26;;;;;2623:26:1;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;2527:86:1;2585:17;;;-1:-1:-1;2585:17:1;;-1:-1:-1;2585:17:1;169:89:26;;;;-1:-1:-1;169:89:26;;;;;;;;;;2163:12:7;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;;;;;;;;2476:1:1;169:89:26;;;;;;;;;;;;;2163:12:7;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:1:1;169:89:26;;;;;;;;;;;;;;;;2163:12:7;-1:-1:-1;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;169:89:26;;2476:1:1;169:89:26;;;;;;-1:-1:-1;169:89:26;;;;;;;;-1:-1:-1;169:89:26;;;;;-1:-1:-1;169:89:26;;;;;;;;;;;;-1:-1:-1;169:89:26;;;;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;;;;;;-1:-1:-1;;169:89:26;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;:::o;2887:340:16:-;;169:89:26;;3032:2:16;3010:24;;3006:215;3032:2;;;169:89:26;;1854:2:16;169:89:26;;1840:16:16;1836:72;;3032:2;169:89:26;;;;2079:95:20;3032:2:16;169:89:26;;;;1949:36:16;3050:27;:::o;169:89:26:-;;;;3032:2:16;169:89:26;;;;;1949:36:16;3050:27;:::o;1836:72::-;169:89:26;3032:2:16;169:89:26;;;1879:18:16;;;;;;;;;;;;169:89:26;;;;;;;;;;;;;;;;2482:1:1;169:89:26;;;;;;1854:2:16;169:89:26;-1:-1:-1;;169:89:26;;;1879:18:16;;;;3006:215;-1:-1:-1;;;;;169:89:26;;;;2482:1:1;169:89:26;;;;;;;;;;;3006:215:16;3032:2;169:89:26;;;;;;;;;;3006:215:16;169:89:26;3032:2:16;169:89:26;;;;;;;;;;;;2482:1:1;169:89:26;;;;;;;;;;;;;;;;;;;2482:1:1;169:89:26;1390:66:16;3168:42;:::o;169:89:26:-;;;;-1:-1:-1;169:89:26;;;;;;;;;;2482:1:1;169:89:26;;;2482:1:1;169:89:26;;2482:1:1;169:89:26;;;;;;;;;;;;;;;;;;;;;2482:1:1;169:89:26;1390:66:16;3168:42;:::o;169:89:26:-;;;;;;;;;;;;;;;;;;;;;;;3032:2:16;169:89:26;;;;;;;;;;;;;;;;;2482:1:1;169:89:26;;;3032:2:16;2482:1:1;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;2482:1:1;169:89:26;;;;;;;;;;;;;2887:340:16;;169:89:26;;3032:2:16;3010:24;;3006:215;3032:2;;;169:89:26;;1854:2:16;169:89:26;;1840:16:16;1836:72;;3032:2;169:89:26;;;;2079:95:20;3032:2:16;169:89:26;;;;1949:36:16;3050:27;:::o;3006:215::-;-1:-1:-1;;;;;169:89:26;;;;2476:1:1;169:89:26;2476:1:1;169:89:26;;;;;;;;;3006:215:16;3032:2;169:89:26;;;;;;;;;;3006:215:16;169:89:26;3032:2:16;169:89:26;;;;;;;;;;;;;;;;;;;;2476:1:1;169:89:26;;;;;;;;;;;2476:1:1;169:89:26;1390:66:16;3168:42;:::o;169:89:26:-;;;;-1:-1:-1;169:89:26;;;;;;;;;;2476:1:1;169:89:26;;;;;;;;;;;;;;;2476:1:1;169:89:26;;;;;;;;;;;;2476:1:1;169:89:26;1390:66:16;3168:42;:::o;169:89:26:-;;;;;;;;;;;;;;;;;;;;;;;3032:2:16;2476:1:1;169:89:26;;;;;;;;;;;;;;;;2476:1:1;169:89:26;;;3032:2:16;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;2476:1:1;169:89:26;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_decode_address": {
                  "entryPoint": 4094,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_address_19266": {
                  "entryPoint": 4072,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_MultiDelegatedRevocationRequest_calldata_dyn_calldata": {
                  "entryPoint": 3988,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_available_length_array_struct_AttestationRequestData_dyn": {
                  "entryPoint": 5647,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_available_length_array_struct_RevocationRequestData_dyn": {
                  "entryPoint": 4670,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_bool_fromMemory": {
                  "entryPoint": 6534,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_struct_AttestationRequestData": {
                  "entryPoint": 5157,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_RevocationRequestData": {
                  "entryPoint": 4630,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_struct_SchemaRecord_fromMemory": {
                  "entryPoint": 6547,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_Signature": {
                  "entryPoint": 4781,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_uint64": {
                  "entryPoint": 4843,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_array_bytes32_dyn": {
                  "entryPoint": 4114,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_Attestation_dyn_array_uint256_dyn": {
                  "entryPoint": 12381,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_array_uint256_dyn": {
                  "entryPoint": 4171,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_packed_bytes32_bytes32_uint8": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_string": {
                  "entryPoint": 4036,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_string_storage": {
                  "entryPoint": 5001,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_struct_Attestation": {
                  "entryPoint": 4222,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_array_struct_AttestationRequestData_calldata_dyn_calldata": {
                  "entryPoint": 5594,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_array_struct_Signature_calldata_dyn_calldata": {
                  "entryPoint": 5880,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_struct_AttestationRequestData_calldata": {
                  "entryPoint": 5446,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_array_bytes32_dyn_dyn": {
                  "entryPoint": 5487,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_struct_AttestationRequestData_dyn": {
                  "entryPoint": 5345,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_struct_Attestation_dyn": {
                  "entryPoint": 6758,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_struct_RevocationRequestData_dyn": {
                  "entryPoint": 5754,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_array_array_uint256_dyn": {
                  "entryPoint": 5830,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_struct_struct_Attestation": {
                  "entryPoint": 5933,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_and_zero_memory_struct_struct_AttestationsResult": {
                  "entryPoint": 8270,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_struct_RevocationRequestData_dyn": {
                  "entryPoint": 4607,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 5130,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "calldata_array_index_access_bytes32_dyn_calldata": {
                  "entryPoint": 4929,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "calldata_array_index_access_struct_MultiAttestationRequest_calldata_dyn_calldata": {
                  "entryPoint": 5560,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "calldata_array_index_access_struct_MultiDelegatedRevocationRequest_calldata_dyn_calldata": {
                  "entryPoint": 4384,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "checked_sub_uint256": {
                  "entryPoint": 4896,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 4945,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_returndata": {
                  "entryPoint": 13553,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 4574,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "finalize_allocation_19263": {
                  "entryPoint": 4418,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "finalize_allocation_19337": {
                  "entryPoint": 4465,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "finalize_allocation_19338": {
                  "entryPoint": 4492,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "finalize_allocation_19343": {
                  "entryPoint": 4519,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "finalize_allocation_19366": {
                  "entryPoint": 4546,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_attest": {
                  "entryPoint": 9786,
                  "id": 1307,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "fun_attest_19271": {
                  "entryPoint": 8295,
                  "id": 1307,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "fun_domainSeparatorV4": {
                  "entryPoint": 11840,
                  "id": 5816,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "fun_hashTypedDataV4": {
                  "entryPoint": 12124,
                  "id": 5853,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_isAttestationValid": {
                  "entryPoint": null,
                  "id": 1026,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_isValidSignatureNow": {
                  "entryPoint": 12162,
                  "id": 6068,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "fun_mergeUIDs": {
                  "entryPoint": 11257,
                  "id": 2018,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "fun_refund": {
                  "entryPoint": 14126,
                  "id": 1855,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_resolveAttestation": {
                  "entryPoint": 13658,
                  "id": 1603,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "fun_resolveAttestations": {
                  "entryPoint": 12980,
                  "id": 1799,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "fun_resolveAttestations_19381": {
                  "entryPoint": 12490,
                  "id": 1799,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "fun_revoke": {
                  "entryPoint": 7392,
                  "id": 1485,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "fun_revokeOffchain": {
                  "entryPoint": 7842,
                  "id": 1926,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "fun_revoke_19277": {
                  "entryPoint": 6837,
                  "id": 1485,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "fun_timestamp": {
                  "entryPoint": 11361,
                  "id": 1885,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "fun_toString": {
                  "entryPoint": 11475,
                  "id": 4057,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_toStringWithFallback": {
                  "entryPoint": 13498,
                  "id": 3787,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_toStringWithFallback_19278": {
                  "entryPoint": 13403,
                  "id": 3787,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "fun_tryRecover": {
                  "entryPoint": 14218,
                  "id": 5607,
                  "parameterSlots": 4,
                  "returnSlots": 3
                },
                "fun_tryRecover_5419": {
                  "entryPoint": 13600,
                  "id": 5419,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "fun_verifyAttest": {
                  "entryPoint": 7974,
                  "id": 2826,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_verifyRevoke": {
                  "entryPoint": 6187,
                  "id": 2908,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "increment_uint256": {
                  "entryPoint": 6173,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "memory_array_index_access_struct_RevocationRequestData_dyn": {
                  "entryPoint": 4876,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "memory_array_index_access_struct_RevocationRequestData_dyn_19269": {
                  "entryPoint": 4863,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_calldatat_address": {
                  "entryPoint": 5467,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "read_from_storage_reference_type_struct_Attestation": {
                  "entryPoint": 6007,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "update_storage_value_offsett_uint64_to_uint64": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "immutableReferences": {
                "150": [
                  {
                    "length": 32,
                    "start": 461
                  },
                  {
                    "length": 32,
                    "start": 6866
                  },
                  {
                    "length": 32,
                    "start": 7425
                  },
                  {
                    "length": 32,
                    "start": 8368
                  },
                  {
                    "length": 32,
                    "start": 9866
                  }
                ],
                "2532": [
                  {
                    "length": 32,
                    "start": 2077
                  }
                ],
                "2534": [
                  {
                    "length": 32,
                    "start": 2120
                  }
                ],
                "2536": [
                  {
                    "length": 32,
                    "start": 2163
                  }
                ],
                "5714": [
                  {
                    "length": 32,
                    "start": 11897
                  }
                ],
                "5716": [
                  {
                    "length": 32,
                    "start": 12086
                  }
                ],
                "5718": [
                  {
                    "length": 32,
                    "start": 11843
                  }
                ],
                "5720": [
                  {
                    "length": 32,
                    "start": 11976
                  }
                ],
                "5722": [
                  {
                    "length": 32,
                    "start": 12014
                  }
                ],
                "5725": [
                  {
                    "length": 32,
                    "start": 1745
                  }
                ],
                "5728": [
                  {
                    "length": 32,
                    "start": 1789
                  }
                ]
              },
              "linkReferences": {},
              "object": "6101206040526004361015610012575f80fd5b5f3560e01c80630eabf66014610d9357806312b11a1714610d5957806313893f6114610cea57806317d7de7c14610c205780632d0335ab14610be85780633c04271514610af857806344adc90e14610a1a57806346926267146109da5780634cb7e9e5146109295780634d0030701461090057806354fd4d50146107fe57806379f7573a1461078657806384b0196e146106b957806395411525146104c6578063a3112a641461047b578063a6d4dbc7146103a4578063b469318d14610357578063b83010d31461031d578063cf190f34146102f3578063d45c4435146102c0578063e30bb5631461028c578063e71ff3651461021e578063ed24911d146101fc578063f10b5cc8146101b85763f17325e71461012d575f80fd5b60203660031901126101b4576004356001600160401b0381116101b45780600401604060031983360301126101b45760206101a481936101ab936101866101726114e1565b92610181602436920184611546565b611425565b61018f836112ff565b52610199826112ff565b503491339135612067565b01516112ff565b51604051908152f35b5f80fd5b346101b4575f3660031901126101b4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b4575f3660031901126101b4576020610216612e40565b604051908152f35b346101b45760203660031901126101b4576004356001600160401b0381116101b45761024e903690600401610f94565b906001600160401b034216915f5b81811061026e57602084604051908152f35b80610286856102806001948688611341565b35612c61565b0161025c565b346101b45760203660031901126101b45760206102b66004355f52600460205260405f2054151590565b6040519015158152f35b346101b45760203660031901126101b4576004355f52600560205260206001600160401b0360405f205416604051908152f35b346101b45760203660031901126101b45760206001600160401b0342166102168160043533611ea2565b346101b4575f3660031901126101b45760206040517fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e758152f35b346101b45760403660031901126101b4576001600160a01b03610378610fe8565b165f52600660205260405f206024355f5260205260206001600160401b0360405f205416604051908152f35b6101003660031901126101b4576040516103bd81611142565b6004358082526103cc36611216565b602083015260603660631901126101b4576040516103e98161118c565b60643560ff811681036101b4578152608435602082015260a43560408083019190915283015260c4356001600160a01b03811681036101b45780606084015260e4356001600160401b03811681036101b4578361044d91608061047996015261182b565b61045561167a565b61045e36611216565b610467826112ff565b52610471816112ff565b503492611ab5565b005b346101b45760203660031901126101b45761049461172d565b506004355f5260046020526104c26104ae60405f20611777565b60405191829160208352602083019061107e565b0390f35b60203660031901126101b4576004356001600160401b0381116101b4576104f1903690600401610f94565b6104fa8161156f565b5f9290915f198101913491855b818110610527576104c261051b8888612bf9565b60405191829182611012565b61053681838598969798611120565b9661054460208901896115da565b929091831580156106a1575b6106925789965f98959895604089019560608a019a60808b359b0135996001600160401b038b16809b1415995b83811015610624578f906105a08b61059a8360051b8d018d611546565b936116f8565b821015610610578f6105b28e9161155b565b906101b4578f908f906105ef61060a946105de600198604051966105d588611142565b87523690611425565b6020860152369060608802016112ad565b6040840152858060a01b031660608301526080820152611f26565b0161057d565b634e487b7160e01b5f52603260045260245ffd5b509a8d9e50839a50610660949c93929199506001985061065a6106699698889f6106529060209a149661155b565b93369161160f565b9061263a565b95865190611320565b94018051610677898961130c565b52610682888861130c565b5051510196949592939201610507565b63251f56a160e21b5f5260045ffd5b506106af60408b018b6116f8565b9050841415610550565b346101b4575f3660031901126101b4576107586106f57f000000000000000000000000000000000000000000000000000000000000000061345b565b6104c26107217f00000000000000000000000000000000000000000000000000000000000000006134ba565b610766604051916107336020846111de565b5f83525f368137604051958695600f60f81b875260e0602088015260e0870190610fc4565b908582036040870152610fc4565b904660608501523060808501525f60a085015283820360c085015261104b565b346101b45760203660031901126101b457600435335f52600360205260405f205490818111156107ef577f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb791604091335f52600360205280835f205582519182526020820152a1005b633ab3447f60e11b5f5260045ffd5b346101b4575f3660031901126101b4576104c260206108ec60016108417f0000000000000000000000000000000000000000000000000000000000000000612cd3565b818461086c7f0000000000000000000000000000000000000000000000000000000000000000612cd3565b81806108977f0000000000000000000000000000000000000000000000000000000000000000612cd3565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826111de565b604051918291602083526020830190610fc4565b346101b45760203660031901126101b45760206001600160401b03421661021681600435612c61565b60203660031901126101b4576004356001600160401b0381116101b457610954903690600401610f94565b5f19810191905f90345b81831061096757005b6109728383866115b8565b6020810135601e19823603018112156101b4578101918235926001600160401b0384116101b457602001928060061b360384136101b457600193826109cc926109d2956109c58c8b14943393369161123e565b9035611ce0565b90611320565b92019161095e565b60603660031901126101b4576104796109f161167a565b6109fa36611216565b610a03826112ff565b52610a0d816112ff565b5034903390600435611ab5565b60203660031901126101b4576004356001600160401b0381116101b457610a45903690600401610f94565b90610a4f8261156f565b915f9134905f925f198101905b808510610a70576104c261051b8789612bf9565b9091929394610a808683866115b8565b906020820191610a9083826115da565b90501561069257610ad0610ac789898885610ac0610ab260019a6020996115da565b93909514943393369161160f565b903561263a565b97885190611320565b96018051610ade898b61130c565b52610ae9888a61130c565b50515101950193929190610a5c565b60203660031901126101b4576004356001600160401b0381116101b457806004019060e060031982360301126101b457604051610b3481611142565b82359283825260248301938435946001600160401b0386116101b457610be06101ab95610bc76101a495610bb460209a98610b768c9a60043691880101611425565b8a820152610b8736604487016112ad565b6040820152610baa60c460a4870196610b9f88610ffe565b6060850152016112eb565b6080820152611f26565b610181610bbf6114e1565b953692611546565b610bd0846112ff565b52610bda836112ff565b5061155b565b903492612067565b346101b45760203660031901126101b4576001600160a01b03610c09610fe8565b165f526003602052602060405f2054604051908152f35b346101b4575f3660031901126101b4576040515f600254610c4081611351565b8084529060018116908115610cc65750600114610c68575b6104c2836108ec818503826111de565b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b808210610cac575090915081016020016108ec610c58565b919260018160209254838588010152019101909291610c94565b60ff191660208086019190915291151560051b840190910191506108ec9050610c58565b346101b45760203660031901126101b4576004356001600160401b0381116101b457610d1a903690600401610f94565b906001600160401b034216915f5b818110610d3a57602084604051908152f35b80610d5385610d4c6001948688611341565b3533611ea2565b01610d28565b346101b4575f3660031901126101b45760206040517ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768152f35b60203660031901126101b4576004356001600160401b0381116101b457610dbe903690600401610f94565b5f198101915f91345b818410610dd057005b610ddb848385611120565b60a0813603126101b457604051610df181611142565b8135815260208201356001600160401b0381116101b457820136601f820112156101b457610e2690369060208135910161123e565b906020810191825260408301356001600160401b0381116101b457830136601f820112156101b457803590610e5a826111ff565b91610e6860405193846111de565b808352602060608185019202830101913683116101b457602001905b828210610f7a5750505060408201818152610eb46080610ea660608801610ffe565b9660608601978852016112eb565b936080840194855251938451928315908115610f6e575b50610692575f5b838110610f0b57505091519351600195610f039590946109cc94508a8c14935085926001600160a01b031691611ce0565b930192610dc7565b600190610f688651610f1d838a61130c565b51610f2984885161130c565b51858060a01b038c5116906001600160401b038851169260405194610f4d86611142565b8552602085015260408401526060830152608082015261182b565b01610ed2565b9050518314158c610ecb565b6020606091610f8936856112ad565b815201910190610e84565b9181601f840112156101b4578235916001600160401b0383116101b4576020808501948460051b0101116101b457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101b457565b35906001600160a01b03821682036101b457565b60206040818301928281528451809452019201905f5b8181106110355750505090565b8251845260209384019390920191600101611028565b90602080835192838152019201905f5b8181106110685750505090565b825184526020938401939092019160010161105b565b9061014061012061111d9380518452602081015160208501526001600160401b0360408201511660408501526001600160401b0360608201511660608501526001600160401b03608082015116608085015260a081015160a085015260018060a01b0360c08201511660c085015260018060a01b0360e08201511660e08501526101008101511515610100850152015191816101208201520190610fc4565b90565b91908110156106105760051b81013590609e19813603018212156101b4570190565b60a081019081106001600160401b0382111761115d57604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761115d57604052565b606081019081106001600160401b0382111761115d57604052565b60c081019081106001600160401b0382111761115d57604052565b61014081019081106001600160401b0382111761115d57604052565b90601f801991011681019081106001600160401b0382111761115d57604052565b6001600160401b03811161115d5760051b60200190565b60409060231901126101b4576040519061122f82611171565b60243582526044356020830152565b92919261124a826111ff565b9361125860405195866111de565b602085848152019260061b8201918183116101b457925b82841061127c5750505050565b6040848303126101b4576020604091825161129681611171565b86358152828701358382015281520193019261126f565b91908260609103126101b4576040516112c58161118c565b8092803560ff811681036101b45760409182918452602081013560208501520135910152565b35906001600160401b03821682036101b457565b8051156106105760200190565b80518210156106105760209160051b010190565b9190820391821161132d57565b634e487b7160e01b5f52601160045260245ffd5b91908110156106105760051b0190565b90600182811c9216801561137f575b602083101461136b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611360565b5f929181549161139883611351565b80835292600181169081156113ed57506001146113b457505050565b5f9081526020812093945091925b8383106113d3575060209250010190565b6001816020929493945483858701015201910191906113c2565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b03811161115d57601f01601f191660200190565b919060c0838203126101b4576040519061143e826111a7565b819361144981610ffe565b8352611457602082016112eb565b6020840152604081013580151581036101b45760408401526060810135606084015260808101356001600160401b0381116101b45781019082601f830112156101b4578135926114a68461140a565b906114b460405192836111de565b848252602085850101116101b4575f60208560a09682889701838601378301015260808501520135910152565b604080519091906114f283826111de565b6001815291601f1901825f5b82811061150a57505050565b602090604051611519816111a7565b5f81525f838201525f60408201525f6060820152606060808201525f60a0820152828285010152016114fe565b90359060be19813603018212156101b4570190565b356001600160a01b03811681036101b45790565b90611579826111ff565b61158660405191826111de565b8281528092611597601f19916111ff565b01905f5b8281106115a757505050565b80606060208093850101520161159b565b91908110156106105760051b81013590603e19813603018212156101b4570190565b903590601e19813603018212156101b457018035906001600160401b0382116101b457602001918160051b360383136101b457565b92919061161b816111ff565b9361162960405195866111de565b602085838152019160051b8101918383116101b45781905b83821061164f575050505050565b81356001600160401b0381116101b45760209161166f8784938701611425565b815201910190611641565b6040805190919061168b83826111de565b6001815291601f1901825f5b8281106116a357505050565b6020906040516116b281611171565b5f81525f8382015282828501015201611697565b906116d0826111ff565b6116dd60405191826111de565b82815280926116ee601f19916111ff565b0190602036910137565b903590601e19813603018212156101b457018035906001600160401b0382116101b4576020019160608202360383136101b457565b6040519061173a826111c2565b6060610120835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201520152565b906006610120604051611789816111c2565b611819819580548352600181015460208401526001600160401b0360028201548181166040860152818160401c16606086015260801c166080840152600381015460a084015260018060a01b0360048201541660c084015260ff600582015460018060a01b03811660e086015260a01c1615156101008401526118126040518096819301611389565b03846111de565b0152565b5f19811461132d5760010190565b608081016001600160401b038151168015159081611973575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160208251920151845f5260036020526001600160401b0360405f20928354936118968561181d565b90555116926040519460208601967fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75885260408701526060860152608085015260a084015260c083015260e082015260e081526118f5610100826111de565b519020612f5c565b9051602083810151604080860151955181519384019290925282019490945260f89390931b6001600160f81b0319166060840152604183526001600160a01b03166119496061846111de565b612f82565b1561195557565b638baa579f60e01b5f5260045ffd5b631ab7da6b60e01b5f5260045ffd5b90506001600160401b034216115f611844565b519081151582036101b457565b6020818303126101b4578051906001600160401b0382116101b45701906080828203126101b45760405191608083018381106001600160401b0382111761115d576040528051835260208101516001600160a01b03811681036101b4576020840152611a0160408201611986565b60408401526060810151906001600160401b0382116101b4570181601f820112156101b457805190611a328261140a565b92611a4060405194856111de565b828452602083830101116101b457815f9260208093018386015e83010152606082015290565b90611a70826111ff565b611a7d60405191826111de565b8281528092611a8e601f19916111ff565b01905f5b828110611a9e57505050565b602090611aa961172d565b82828501015201611a92565b6040516351753e3760e11b81526004810182905290915f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611cd5575f92611cb1575b50815115611c93578051611b1d81611a66565b93611b27826116c6565b95426001600160401b0316935f5b848110611b50575050505050509161111d93916001936130ca565b611b5a818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c6657825467ffffffffffffffff60801b191660808b901b67ffffffffffffffff60801b16179092556001938792908c90611c01908690611bfb90611777565b611777565b9261130c565b52611c0c848d61130c565b506020810151611c1c858f61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208d60c0611c53888a8060a01b039361130c565b510151169251604051908152a401611b35565b63905e710760e01b5f5260045ffd5b63157bd4c360e01b5f5260045ffd5b634ca8886760e01b5f5260045ffd5b635f9bd90760e11b5f5260045ffd5b63c5723b5160e01b5f5260045ffd5b611cce9192503d805f833e611cc681836111de565b810190611993565b905f611b0a565b6040513d5f823e3d90fd5b6040516351753e3760e11b8152600481018290529195949392915f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611cd5575f91611e88575b50805115611c93578651611d4c81611a66565b92611d56826116c6565b945f996001600160401b0342169a5b848110611d7c57505050505061111d9596506130ca565b611d86818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c66578f600195611bf6611e19928b96908154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b611e23858d61130c565b52611e2e848c61130c565b506020810151611e3e858e61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208c60c0611e75888a8060a01b039361130c565b510151169251604051908152a401611d65565b611e9c91503d805f833e611cc681836111de565b5f611d39565b60018060a01b031691825f52600660205260405f2090825f52816020526001600160401b0360405f205416611f17576001600160401b0391835f5260205260405f20828216831982541617905516917f92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a22295f80a4565b63ec9d6eeb60e01b5f5260045ffd5b608081016001600160401b03815116801515908161203b575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160018060a01b03825116916001600160401b03602082015116906040810151151560608201519060a060808401516020815191012093015193885f5260036020526001600160401b0360405f2096875497611fc38961181d565b90555116966040519860208a019a7ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768c5260408b015260608a0152608089015260a088015260c087015260e086015261010085015261012084015261014083015261016082015261016081526118f5610180826111de565b90506001600160401b034216115f611f3f565b6040519061205b82611171565b60606020835f81520152565b919260e05261207461204e565b5080519061208061204e565b6101005261208d826116c6565b61010051602001526040516351753e3760e11b8152600481018490525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611cd5575f60805261261e575b506080515115611c935790916120fe83611a66565b60a05261210a836116c6565b60c0525f915b83831061213e575050505050612132600160e05160c05160a0516080516132b4565b61010051526101005190565b61214e838297939495969761130c565b519160208301956001600160401b03875116801515908161260a575b506125fb576040608051015115806125ee575b611c75576001600160401b0360608501519751169660018060a01b0385511660408601511515906080870151926040519a6121b78c6111c2565b5f8c528960208d01526001600160401b03421660408d015260608c01525f60808c015260a08b015260c08a015260018060a01b038a1660e08a01526101008901526101208801525f5b6020880151886122d06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156122f4575060010163ffffffff16612200565b905097969094959197939293808252805f52600460205260405f209180518355602081015160018401556123a2600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d57899461242c6006840154611351565b601f8111612596575b50602090601f831160011461252857600692915f918361251d575b50508160011b915f199060031b1c1916179101555b6060850151806124f9575b50936001946124818560a05161130c565b5261248e8460a05161130c565b5060a08101516124a08560c05161130c565b52816124b385602061010051015161130c565b52848060a01b039051166040519182527f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b356020868060a01b038b1693a401919290612110565b6125109193505f52600460205260405f2054151590565b15611ca25786915f612470565b015190505f80612450565b90600684015f52805f20915f5b601f198516811061257b5750918391600193600695601f19811610612563575b505050811b01910155612465565b01515f1960f88460031b161c191690555f8080612555565b8183015184558d985060019093019260209283019201612535565b90919293949550600684015f5260205f20601f840160051c8101602085106125e7575b908c979695949392915b601f830160051c820181106125d9575050612435565b5f81558d98506001016125c3565b50806125b9565b506040840151151561217d565b6308e8b93760e01b5f5260045ffd5b90506001600160401b03421610155f61216a565b612631903d805f833e611cc681836111de565b6080525f6120e9565b919293909360c05260e05261264d61204e565b5082519061265961204e565b61010052612666826116c6565b61010051602001526040516351753e3760e11b815260048101829052935f856024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa948515611cd5575f95612bdd575b50845115611c9357906126d483611a66565b6080526126e0836116c6565b60a0525f915b83831061270b5750505050506121329060e0519060c0519060a05190608051906132b4565b90929491939561271b858361130c565b519260208401966001600160401b038851168015159081612bc9575b506125fb5760408201511580612bbc575b611c7557606085015197518551604080880151608089015191519b9193901515926001600160a01b031691906001600160401b03168a60208e61278a816111c2565b5f815201528c60406001600160401b03421691015260608d01525f60808d015260a08c015260c08b015260018060a01b038b1660e08b01526101008a01526101208901525f5b6020890151896128a06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156128c4575060010163ffffffff166127d0565b9050989691979095949298808252805f52600460205260405f20918051835560208101516001840155612971600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d5788946129fb6006840154611351565b601f8111612b64575b50602090601f8311600114612af657600692915f9183612aeb575b50508160011b915f199060031b1c1916179101555b606085015180612ac7575b5093600194612a508560805161130c565b52612a5d8460805161130c565b5060a0810151612a6f8560a05161130c565b5281612a8285602061010051015161130c565b52848060a01b039051166040519182527f8bf46bf4cfd674fa735a3d63ec1c9ad4153f033c290341f3a588b75685141b356020868060a01b038b1693a40191906126e6565b612ade9193505f52600460205260405f2054151590565b15611ca25785915f612a3f565b015190505f80612a1f565b90600684015f52805f20915f5b601f1985168110612b495750918391600193600695601f19811610612b31575b505050811b01910155612a34565b01515f1960f88460031b161c191690555f8080612b23565b8183015184558c985060019093019260209283019201612b03565b90919293949550600684015f5260205f20601f840160051c810160208510612bb5575b908b979695949392915b601f830160051c82018110612ba7575050612a04565b5f81558c9850600101612b91565b5080612b87565b5060408501511515612748565b90506001600160401b03421610155f612737565b612bf29195503d805f833e611cc681836111de565b935f6126c2565b90612c03906116c6565b905f8151915f5b838110612c18575050505090565b612c22818361130c565b5180515f915b818310612c3a57505050600101612c0a565b90919460018091612c4b888561130c565b51612c56828c61130c565b520195019190612c28565b90815f5260056020526001600160401b0360405f205416612cc4576001600160401b0390825f52600560205260405f20828216831982541617905516907f5aafceeb1c7ad58e4a84898bdee37c02c0fc46e7d24e6b60e8209449f183459f5f80a3565b6317133ca360e11b5f5260045ffd5b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b821015612e1d575b806d04ee2d6d415b85acef8100000000600a921015612e02575b662386f26fc10000811015612dee575b6305f5e100811015612ddd575b612710811015612dce575b6064811015612dc0575b1015612db5575b600a60216001840193612d5a8561140a565b94612d6860405196876111de565b808652612d77601f199161140a565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353048015612db057600a9091612d82565b505090565b600190910190612d48565b606460029104930192612d41565b61271060049104930192612d37565b6305f5e10060089104930192612d2c565b662386f26fc1000060109104930192612d1f565b6d04ee2d6d415b85acef810000000060209104930192612d0f565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8104612cf5565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480612f33575b15612e9b577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152612f2d60c0826111de565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614612e72565b604290612f67612e40565b906040519161190160f01b8352600283015260228201522090565b9190823b612fd15790612f9491613520565b506004811015612fbd57159182612faa57505090565b6001600160a01b03918216911614919050565b634e487b7160e01b5f52602160045260245ffd5b915f9261300761301585946040519283916020830195630b135d3f60e11b87526024840152604060448401526064830190610fc4565b03601f1981018352826111de565b51915afa6130216134f1565b8161304f575b81613030575090565b90506020818051810103126101b45760200151630b135d3f60e11b1490565b905060208151101590613027565b929160408401936040815282518095526060810194602060608260051b8401019401905f5b81811061309f5750505061111d939450602081840391015261104b565b9091946020806130bb600193605f19888203018c52895161107e565b97019801910196919096613082565b9391908051946001861461328e57602001516001600160a01b031690811561324f57604051636723702360e11b81525f9690602081600481875afa908115611cd5575f91613215575b50905f915b8183106131b9575050509160209161314793876040518096819582946388e5b2d960e01b84526004840161305d565b03925af1908115611cd5575f9161317f575b501561317057613167575090565b61111d9061372e565b63bf2f3a8b60e01b5f5260045ffd5b90506020813d6020116131b1575b8161319a602093836111de565b810103126101b4576131ab90611986565b5f613159565b3d915061318d565b909197966131c7898761130c565b51801561320a5782156131fb578181116131ec5780600192039801985b019190613118565b63044044a560e21b5f5260045ffd5b631574f9f360e01b5f5260045ffd5b5096976001906131e4565b90506020813d602011613247575b81613230602093836111de565b810103126101b45761324190611986565b5f613113565b3d9150613223565b50505f939192935b8281106132775750505061326a57505f90565b6132739061372e565b5f90565b613281818361130c565b516131fb57600101613257565b9061111d9550916132ad6132a66001949695966112ff565b51916112ff565b519161355a565b9391908051946001861461344457602001516001600160a01b031690811561341257604051636723702360e11b81525f9690602081600481875afa908115611cd5575f916133d8575b50905f915b81831061339a575050509160209161333193876040518096819582946348ed85bf60e11b84526004840161305d565b03925af1908115611cd5575f91613360575b501561335157613167575090565b63e8bee83960e01b5f5260045ffd5b90506020813d602011613392575b8161337b602093836111de565b810103126101b45761338c90611986565b5f613343565b3d915061336e565b909197966133a8898761130c565b5180156133cd5782156131fb578181116131ec5780600192039801985b019190613302565b5096976001906133c5565b90506020813d60201161340a575b816133f3602093836111de565b810103126101b45761340490611986565b5f6132fd565b3d91506133e6565b50505f939192935b82811061342d5750505061326a57505f90565b613437818361130c565b516131fb5760010161341a565b9061111d9550916132ad6132a65f949695966112ff565b60ff81146134a15760ff811690601f8211613492576040519161347f6040846111de565b6020808452838101919036833783525290565b632cd44ac360e21b5f5260045ffd5b5060405161111d816134b3815f611389565b03826111de565b60ff81146134de5760ff811690601f8211613492576040519161347f6040846111de565b5060405161111d816134b3816001611389565b3d1561351b573d906135028261140a565b9161351060405193846111de565b82523d5f602084013e565b606090565b8151919060418303613550576135499250602082015190606060408401519301515f1a9061378a565b9192909190565b50505f9160029190565b6020015191949290916001600160a01b031690811561371c57908592918361369f575b602092919015613618576135ae9160405194858094819363e49617e160e01b8352876004840152602483019061107e565b03925af1908115611cd5575f916135de575b50156135cf575b613167575090565b63ccf3bb2760e01b5f5260045ffd5b90506020813d602011613610575b816135f9602093836111de565b810103126101b45761360a90611986565b5f6135c0565b3d91506135ec565b61363f9160405194858094819363e60c350560e01b8352876004840152602483019061107e565b03925af1908115611cd5575f91613665575b506135c75763bd8ba84d60e01b5f5260045ffd5b90506020813d602011613697575b81613680602093836111de565b810103126101b45761369190611986565b5f613651565b3d9150613673565b9491909250604051636723702360e11b8152602081600481875afa908115611cd5575f916136e2575b50156131fb578186116131ec57908590039385929061357d565b90506020813d602011613714575b816136fd602093836111de565b810103126101b45761370e90611986565b5f6136c8565b3d91506136f0565b50505090916131fb5761326a57505f90565b806137365750565b804710613774575f80808093335af161374d6134f1565b90156137565750565b80511561376557602081519101fd5b63d6bda27560e01b5f5260045ffd5b4763cf47918160e01b5f5260045260245260445ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613801579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15611cd5575f516001600160a01b038116156137f757905f905f90565b505f906001905f90565b5050505f916003919056fea26469706673582212207ee7d0784d1e2f31fe3051b5c9419341fc69728b5548377f2d9a8b661c25766c64736f6c634300081b0033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x12 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEABF660 EQ PUSH2 0xD93 JUMPI DUP1 PUSH4 0x12B11A17 EQ PUSH2 0xD59 JUMPI DUP1 PUSH4 0x13893F61 EQ PUSH2 0xCEA JUMPI DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0xC20 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0xBE8 JUMPI DUP1 PUSH4 0x3C042715 EQ PUSH2 0xAF8 JUMPI DUP1 PUSH4 0x44ADC90E EQ PUSH2 0xA1A JUMPI DUP1 PUSH4 0x46926267 EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0x4CB7E9E5 EQ PUSH2 0x929 JUMPI DUP1 PUSH4 0x4D003070 EQ PUSH2 0x900 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x7FE JUMPI DUP1 PUSH4 0x79F7573A EQ PUSH2 0x786 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0x95411525 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0xA3112A64 EQ PUSH2 0x47B JUMPI DUP1 PUSH4 0xA6D4DBC7 EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0xB469318D EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0xB83010D3 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xCF190F34 EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xD45C4435 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xE30BB563 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xE71FF365 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0xF10B5CC8 EQ PUSH2 0x1B8 JUMPI PUSH4 0xF17325E7 EQ PUSH2 0x12D JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x4 ADD PUSH1 0x40 PUSH1 0x3 NOT DUP4 CALLDATASIZE SUB ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x1A4 DUP2 SWAP4 PUSH2 0x1AB SWAP4 PUSH2 0x186 PUSH2 0x172 PUSH2 0x14E1 JUMP JUMPDEST SWAP3 PUSH2 0x181 PUSH1 0x24 CALLDATASIZE SWAP3 ADD DUP5 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x1425 JUMP JUMPDEST PUSH2 0x18F DUP4 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0x199 DUP3 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP2 CALLER SWAP2 CALLDATALOAD PUSH2 0x2067 JUMP JUMPDEST ADD MLOAD PUSH2 0x12FF JUMP JUMPDEST MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 SWAP1 RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x216 PUSH2 0x2E40 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x24E SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x26E JUMPI PUSH1 0x20 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH2 0x286 DUP6 PUSH2 0x280 PUSH1 0x1 SWAP5 DUP7 DUP9 PUSH2 0x1341 JUMP JUMPDEST CALLDATALOAD PUSH2 0x2C61 JUMP JUMPDEST ADD PUSH2 0x25C JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH2 0x2B6 PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH2 0x216 DUP2 PUSH1 0x4 CALLDATALOAD CALLER PUSH2 0x1EA2 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xB5D556F07587EC0F08CF386545CC4362C702A001650C2058002615EE5C9D1E75 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x378 PUSH2 0xFE8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x24 CALLDATALOAD PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH2 0x100 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3BD DUP2 PUSH2 0x1142 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD DUP1 DUP3 MSTORE PUSH2 0x3CC CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 CALLDATASIZE PUSH1 0x63 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x3E9 DUP2 PUSH2 0x118C JUMP JUMPDEST PUSH1 0x64 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP2 MSTORE PUSH1 0x84 CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA4 CALLDATALOAD PUSH1 0x40 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 ADD MSTORE PUSH1 0xC4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0xE4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI DUP4 PUSH2 0x44D SWAP2 PUSH1 0x80 PUSH2 0x479 SWAP7 ADD MSTORE PUSH2 0x182B JUMP JUMPDEST PUSH2 0x455 PUSH2 0x167A JUMP JUMPDEST PUSH2 0x45E CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH2 0x467 DUP3 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0x471 DUP2 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP3 PUSH2 0x1AB5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x494 PUSH2 0x172D JUMP JUMPDEST POP PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH2 0x4C2 PUSH2 0x4AE PUSH1 0x40 PUSH0 KECCAK256 PUSH2 0x1777 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x4F1 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH2 0x4FA DUP2 PUSH2 0x156F JUMP JUMPDEST PUSH0 SWAP3 SWAP1 SWAP2 PUSH0 NOT DUP2 ADD SWAP2 CALLVALUE SWAP2 DUP6 JUMPDEST DUP2 DUP2 LT PUSH2 0x527 JUMPI PUSH2 0x4C2 PUSH2 0x51B DUP9 DUP9 PUSH2 0x2BF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x1012 JUMP JUMPDEST PUSH2 0x536 DUP2 DUP4 DUP6 SWAP9 SWAP7 SWAP8 SWAP9 PUSH2 0x1120 JUMP JUMPDEST SWAP7 PUSH2 0x544 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x15DA JUMP JUMPDEST SWAP3 SWAP1 SWAP2 DUP4 ISZERO DUP1 ISZERO PUSH2 0x6A1 JUMPI JUMPDEST PUSH2 0x692 JUMPI DUP10 SWAP7 PUSH0 SWAP9 SWAP6 SWAP9 SWAP6 PUSH1 0x40 DUP10 ADD SWAP6 PUSH1 0x60 DUP11 ADD SWAP11 PUSH1 0x80 DUP12 CALLDATALOAD SWAP12 ADD CALLDATALOAD SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP12 AND DUP1 SWAP12 EQ ISZERO SWAP10 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x624 JUMPI DUP16 SWAP1 PUSH2 0x5A0 DUP12 PUSH2 0x59A DUP4 PUSH1 0x5 SHL DUP14 ADD DUP14 PUSH2 0x1546 JUMP JUMPDEST SWAP4 PUSH2 0x16F8 JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x610 JUMPI DUP16 PUSH2 0x5B2 DUP15 SWAP2 PUSH2 0x155B JUMP JUMPDEST SWAP1 PUSH2 0x1B4 JUMPI DUP16 SWAP1 DUP16 SWAP1 PUSH2 0x5EF PUSH2 0x60A SWAP5 PUSH2 0x5DE PUSH1 0x1 SWAP9 PUSH1 0x40 MLOAD SWAP7 PUSH2 0x5D5 DUP9 PUSH2 0x1142 JUMP JUMPDEST DUP8 MSTORE CALLDATASIZE SWAP1 PUSH2 0x1425 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MSTORE CALLDATASIZE SWAP1 PUSH1 0x60 DUP9 MUL ADD PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE DUP6 DUP1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1F26 JUMP JUMPDEST ADD PUSH2 0x57D JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP11 DUP14 SWAP15 POP DUP4 SWAP11 POP PUSH2 0x660 SWAP5 SWAP13 SWAP4 SWAP3 SWAP2 SWAP10 POP PUSH1 0x1 SWAP9 POP PUSH2 0x65A PUSH2 0x669 SWAP7 SWAP9 DUP9 SWAP16 PUSH2 0x652 SWAP1 PUSH1 0x20 SWAP11 EQ SWAP7 PUSH2 0x155B JUMP JUMPDEST SWAP4 CALLDATASIZE SWAP2 PUSH2 0x160F JUMP JUMPDEST SWAP1 PUSH2 0x263A JUMP JUMPDEST SWAP6 DUP7 MLOAD SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP5 ADD DUP1 MLOAD PUSH2 0x677 DUP10 DUP10 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x682 DUP9 DUP9 PUSH2 0x130C JUMP JUMPDEST POP MLOAD MLOAD ADD SWAP7 SWAP5 SWAP6 SWAP3 SWAP4 SWAP3 ADD PUSH2 0x507 JUMP JUMPDEST PUSH4 0x251F56A1 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH2 0x6AF PUSH1 0x40 DUP12 ADD DUP12 PUSH2 0x16F8 JUMP JUMPDEST SWAP1 POP DUP5 EQ ISZERO PUSH2 0x550 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x758 PUSH2 0x6F5 PUSH32 0x0 PUSH2 0x345B JUMP JUMPDEST PUSH2 0x4C2 PUSH2 0x721 PUSH32 0x0 PUSH2 0x34BA JUMP JUMPDEST PUSH2 0x766 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x733 PUSH1 0x20 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH0 DUP4 MSTORE PUSH0 CALLDATASIZE DUP2 CALLDATACOPY PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0xF PUSH1 0xF8 SHL DUP8 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0xFC4 JUMP JUMPDEST SWAP1 CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP3 SUB PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x104B JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD CALLER PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD SWAP1 DUP2 DUP2 GT ISZERO PUSH2 0x7EF JUMPI PUSH32 0x57B09AF877DF9068FD60A69D7B21F5576B8B38955812D6AE4AC52942F1E38FB7 SWAP2 PUSH1 0x40 SWAP2 CALLER PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 DUP4 PUSH0 KECCAK256 SSTORE DUP3 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE LOG1 STOP JUMPDEST PUSH4 0x3AB3447F PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x4C2 PUSH1 0x20 PUSH2 0x8EC PUSH1 0x1 PUSH2 0x841 PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST DUP2 DUP5 PUSH2 0x86C PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST DUP2 DUP1 PUSH2 0x897 PUSH32 0x0 PUSH2 0x2CD3 JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP10 DUP8 DUP12 SWAP9 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP11 ADD MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH2 0x216 DUP2 PUSH1 0x4 CALLDATALOAD PUSH2 0x2C61 JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0x954 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP2 SWAP1 PUSH0 SWAP1 CALLVALUE JUMPDEST DUP2 DUP4 LT PUSH2 0x967 JUMPI STOP JUMPDEST PUSH2 0x972 DUP4 DUP4 DUP7 PUSH2 0x15B8 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x1E NOT DUP3 CALLDATASIZE SUB ADD DUP2 SLT ISZERO PUSH2 0x1B4 JUMPI DUP2 ADD SWAP2 DUP3 CALLDATALOAD SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP3 DUP1 PUSH1 0x6 SHL CALLDATASIZE SUB DUP5 SGT PUSH2 0x1B4 JUMPI PUSH1 0x1 SWAP4 DUP3 PUSH2 0x9CC SWAP3 PUSH2 0x9D2 SWAP6 PUSH2 0x9C5 DUP13 DUP12 EQ SWAP5 CALLER SWAP4 CALLDATASIZE SWAP2 PUSH2 0x123E JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x1CE0 JUMP JUMPDEST SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP3 ADD SWAP2 PUSH2 0x95E JUMP JUMPDEST PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH2 0x479 PUSH2 0x9F1 PUSH2 0x167A JUMP JUMPDEST PUSH2 0x9FA CALLDATASIZE PUSH2 0x1216 JUMP JUMPDEST PUSH2 0xA03 DUP3 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0xA0D DUP2 PUSH2 0x12FF JUMP JUMPDEST POP CALLVALUE SWAP1 CALLER SWAP1 PUSH1 0x4 CALLDATALOAD PUSH2 0x1AB5 JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xA45 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH2 0xA4F DUP3 PUSH2 0x156F JUMP JUMPDEST SWAP2 PUSH0 SWAP2 CALLVALUE SWAP1 PUSH0 SWAP3 PUSH0 NOT DUP2 ADD SWAP1 JUMPDEST DUP1 DUP6 LT PUSH2 0xA70 JUMPI PUSH2 0x4C2 PUSH2 0x51B DUP8 DUP10 PUSH2 0x2BF9 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 PUSH2 0xA80 DUP7 DUP4 DUP7 PUSH2 0x15B8 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP3 ADD SWAP2 PUSH2 0xA90 DUP4 DUP3 PUSH2 0x15DA JUMP JUMPDEST SWAP1 POP ISZERO PUSH2 0x692 JUMPI PUSH2 0xAD0 PUSH2 0xAC7 DUP10 DUP10 DUP9 DUP6 PUSH2 0xAC0 PUSH2 0xAB2 PUSH1 0x1 SWAP11 PUSH1 0x20 SWAP10 PUSH2 0x15DA JUMP JUMPDEST SWAP4 SWAP1 SWAP6 EQ SWAP5 CALLER SWAP4 CALLDATASIZE SWAP2 PUSH2 0x160F JUMP JUMPDEST SWAP1 CALLDATALOAD PUSH2 0x263A JUMP JUMPDEST SWAP8 DUP9 MLOAD SWAP1 PUSH2 0x1320 JUMP JUMPDEST SWAP7 ADD DUP1 MLOAD PUSH2 0xADE DUP10 DUP12 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0xAE9 DUP9 DUP11 PUSH2 0x130C JUMP JUMPDEST POP MLOAD MLOAD ADD SWAP6 ADD SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xA5C JUMP JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP1 PUSH1 0x4 ADD SWAP1 PUSH1 0xE0 PUSH1 0x3 NOT DUP3 CALLDATASIZE SUB ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0xB34 DUP2 PUSH2 0x1142 JUMP JUMPDEST DUP3 CALLDATALOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x24 DUP4 ADD SWAP4 DUP5 CALLDATALOAD SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 GT PUSH2 0x1B4 JUMPI PUSH2 0xBE0 PUSH2 0x1AB SWAP6 PUSH2 0xBC7 PUSH2 0x1A4 SWAP6 PUSH2 0xBB4 PUSH1 0x20 SWAP11 SWAP9 PUSH2 0xB76 DUP13 SWAP11 PUSH1 0x4 CALLDATASIZE SWAP2 DUP9 ADD ADD PUSH2 0x1425 JUMP JUMPDEST DUP11 DUP3 ADD MSTORE PUSH2 0xB87 CALLDATASIZE PUSH1 0x44 DUP8 ADD PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xBAA PUSH1 0xC4 PUSH1 0xA4 DUP8 ADD SWAP7 PUSH2 0xB9F DUP9 PUSH2 0xFFE JUMP JUMPDEST PUSH1 0x60 DUP6 ADD MSTORE ADD PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1F26 JUMP JUMPDEST PUSH2 0x181 PUSH2 0xBBF PUSH2 0x14E1 JUMP JUMPDEST SWAP6 CALLDATASIZE SWAP3 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0xBD0 DUP5 PUSH2 0x12FF JUMP JUMPDEST MSTORE PUSH2 0xBDA DUP4 PUSH2 0x12FF JUMP JUMPDEST POP PUSH2 0x155B JUMP JUMPDEST SWAP1 CALLVALUE SWAP3 PUSH2 0x2067 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0xC09 PUSH2 0xFE8 JUMP JUMPDEST AND PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH0 PUSH1 0x2 SLOAD PUSH2 0xC40 DUP2 PUSH2 0x1351 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0xCC6 JUMPI POP PUSH1 0x1 EQ PUSH2 0xC68 JUMPI JUMPDEST PUSH2 0x4C2 DUP4 PUSH2 0x8EC DUP2 DUP6 SUB DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x2 PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE SWAP4 SWAP3 POP SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0xCAC JUMPI POP SWAP1 SWAP2 POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x8EC PUSH2 0xC58 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP3 SWAP2 PUSH2 0xC94 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x5 SHL DUP5 ADD SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x8EC SWAP1 POP PUSH2 0xC58 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xD1A SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0xD3A JUMPI PUSH1 0x20 DUP5 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST DUP1 PUSH2 0xD53 DUP6 PUSH2 0xD4C PUSH1 0x1 SWAP5 DUP7 DUP9 PUSH2 0x1341 JUMP JUMPDEST CALLDATALOAD CALLER PUSH2 0x1EA2 JUMP JUMPDEST ADD PUSH2 0xD28 JUMP JUMPDEST CALLVALUE PUSH2 0x1B4 JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH32 0xFEB2925A02BAE3DAE48D424A0437A2B6AC939AA9230DDC55A1A76F065D988076 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH2 0xDBE SWAP1 CALLDATASIZE SWAP1 PUSH1 0x4 ADD PUSH2 0xF94 JUMP JUMPDEST PUSH0 NOT DUP2 ADD SWAP2 PUSH0 SWAP2 CALLVALUE JUMPDEST DUP2 DUP5 LT PUSH2 0xDD0 JUMPI STOP JUMPDEST PUSH2 0xDDB DUP5 DUP4 DUP6 PUSH2 0x1120 JUMP JUMPDEST PUSH1 0xA0 DUP2 CALLDATASIZE SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0xDF1 DUP2 PUSH2 0x1142 JUMP JUMPDEST DUP2 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP3 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0xE26 SWAP1 CALLDATASIZE SWAP1 PUSH1 0x20 DUP2 CALLDATALOAD SWAP2 ADD PUSH2 0x123E JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP4 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP1 CALLDATALOAD SWAP1 PUSH2 0xE5A DUP3 PUSH2 0x11FF JUMP JUMPDEST SWAP2 PUSH2 0xE68 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP1 DUP4 MSTORE PUSH1 0x20 PUSH1 0x60 DUP2 DUP6 ADD SWAP3 MUL DUP4 ADD ADD SWAP2 CALLDATASIZE DUP4 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP1 JUMPDEST DUP3 DUP3 LT PUSH2 0xF7A JUMPI POP POP POP PUSH1 0x40 DUP3 ADD DUP2 DUP2 MSTORE PUSH2 0xEB4 PUSH1 0x80 PUSH2 0xEA6 PUSH1 0x60 DUP9 ADD PUSH2 0xFFE JUMP JUMPDEST SWAP7 PUSH1 0x60 DUP7 ADD SWAP8 DUP9 MSTORE ADD PUSH2 0x12EB JUMP JUMPDEST SWAP4 PUSH1 0x80 DUP5 ADD SWAP5 DUP6 MSTORE MLOAD SWAP4 DUP5 MLOAD SWAP3 DUP4 ISZERO SWAP1 DUP2 ISZERO PUSH2 0xF6E JUMPI JUMPDEST POP PUSH2 0x692 JUMPI PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0xF0B JUMPI POP POP SWAP2 MLOAD SWAP4 MLOAD PUSH1 0x1 SWAP6 PUSH2 0xF03 SWAP6 SWAP1 SWAP5 PUSH2 0x9CC SWAP5 POP DUP11 DUP13 EQ SWAP4 POP DUP6 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH2 0x1CE0 JUMP JUMPDEST SWAP4 ADD SWAP3 PUSH2 0xDC7 JUMP JUMPDEST PUSH1 0x1 SWAP1 PUSH2 0xF68 DUP7 MLOAD PUSH2 0xF1D DUP4 DUP11 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0xF29 DUP5 DUP9 MLOAD PUSH2 0x130C JUMP JUMPDEST MLOAD DUP6 DUP1 PUSH1 0xA0 SHL SUB DUP13 MLOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 MLOAD AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH2 0xF4D DUP7 PUSH2 0x1142 JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x182B JUMP JUMPDEST ADD PUSH2 0xED2 JUMP JUMPDEST SWAP1 POP MLOAD DUP4 EQ ISZERO DUP13 PUSH2 0xECB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x60 SWAP2 PUSH2 0xF89 CALLDATASIZE DUP6 PUSH2 0x12AD JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0xE84 JUMP JUMPDEST SWAP2 DUP2 PUSH1 0x1F DUP5 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP3 CALLDATALOAD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 DUP1 DUP6 ADD SWAP5 DUP5 PUSH1 0x5 SHL ADD ADD GT PUSH2 0x1B4 JUMPI JUMP JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 DUP2 DUP4 ADD SWAP3 DUP3 DUP2 MSTORE DUP5 MLOAD DUP1 SWAP5 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1035 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1028 JUMP JUMPDEST SWAP1 PUSH1 0x20 DUP1 DUP4 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP3 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x1068 JUMPI POP POP POP SWAP1 JUMP JUMPDEST DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x105B JUMP JUMPDEST SWAP1 PUSH2 0x140 PUSH2 0x120 PUSH2 0x111D SWAP4 DUP1 MLOAD DUP5 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP3 ADD MLOAD AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP3 ADD MLOAD AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0xC0 DUP3 ADD MLOAD AND PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0xE0 DUP3 ADD MLOAD AND PUSH1 0xE0 DUP6 ADD MSTORE PUSH2 0x100 DUP2 ADD MLOAD ISZERO ISZERO PUSH2 0x100 DUP6 ADD MSTORE ADD MLOAD SWAP2 DUP2 PUSH2 0x120 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x9E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x60 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0xC0 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH2 0x140 DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 SWAP1 PUSH1 0x23 NOT ADD SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x122F DUP3 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD DUP3 MSTORE PUSH1 0x44 CALLDATALOAD PUSH1 0x20 DUP4 ADD MSTORE JUMP JUMPDEST SWAP3 SWAP2 SWAP3 PUSH2 0x124A DUP3 PUSH2 0x11FF JUMP JUMPDEST SWAP4 PUSH2 0x1258 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP6 DUP5 DUP2 MSTORE ADD SWAP3 PUSH1 0x6 SHL DUP3 ADD SWAP2 DUP2 DUP4 GT PUSH2 0x1B4 JUMPI SWAP3 JUMPDEST DUP3 DUP5 LT PUSH2 0x127C JUMPI POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP5 DUP4 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 PUSH1 0x40 SWAP2 DUP3 MLOAD PUSH2 0x1296 DUP2 PUSH2 0x1171 JUMP JUMPDEST DUP7 CALLDATALOAD DUP2 MSTORE DUP3 DUP8 ADD CALLDATALOAD DUP4 DUP3 ADD MSTORE DUP2 MSTORE ADD SWAP4 ADD SWAP3 PUSH2 0x126F JUMP JUMPDEST SWAP2 SWAP1 DUP3 PUSH1 0x60 SWAP2 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH2 0x12C5 DUP2 PUSH2 0x118C JUMP JUMPDEST DUP1 SWAP3 DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 SWAP2 DUP3 SWAP2 DUP5 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x20 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x610 JUMPI PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x20 SWAP2 PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 SUB SWAP2 DUP3 GT PUSH2 0x132D JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x137F JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x136B JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x1360 JUMP JUMPDEST PUSH0 SWAP3 SWAP2 DUP2 SLOAD SWAP2 PUSH2 0x1398 DUP4 PUSH2 0x1351 JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x13ED JUMPI POP PUSH1 0x1 EQ PUSH2 0x13B4 JUMPI POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 SWAP4 SWAP5 POP SWAP2 SWAP3 JUMPDEST DUP4 DUP4 LT PUSH2 0x13D3 JUMPI POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP5 SWAP4 SWAP5 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP2 SWAP1 PUSH2 0x13C2 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 PUSH1 0xC0 DUP4 DUP3 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP1 PUSH2 0x143E DUP3 PUSH2 0x11A7 JUMP JUMPDEST DUP2 SWAP4 PUSH2 0x1449 DUP2 PUSH2 0xFFE JUMP JUMPDEST DUP4 MSTORE PUSH2 0x1457 PUSH1 0x20 DUP3 ADD PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP2 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI DUP2 ADD SWAP1 DUP3 PUSH1 0x1F DUP4 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP2 CALLDATALOAD SWAP3 PUSH2 0x14A6 DUP5 PUSH2 0x140A JUMP JUMPDEST SWAP1 PUSH2 0x14B4 PUSH1 0x40 MLOAD SWAP3 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x20 DUP6 DUP6 ADD ADD GT PUSH2 0x1B4 JUMPI PUSH0 PUSH1 0x20 DUP6 PUSH1 0xA0 SWAP7 DUP3 DUP9 SWAP8 ADD DUP4 DUP7 ADD CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE ADD CALLDATALOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x14F2 DUP4 DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE SWAP2 PUSH1 0x1F NOT ADD DUP3 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x150A JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x1519 DUP2 PUSH2 0x11A7 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x14FE JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0xBE NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1579 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x1586 PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x1597 PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x15A7 JUMPI POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x60 PUSH1 0x20 DUP1 SWAP4 DUP6 ADD ADD MSTORE ADD PUSH2 0x159B JUMP JUMPDEST SWAP2 SWAP1 DUP2 LT ISZERO PUSH2 0x610 JUMPI PUSH1 0x5 SHL DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x3E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD SWAP1 JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP2 DUP2 PUSH1 0x5 SHL CALLDATASIZE SUB DUP4 SGT PUSH2 0x1B4 JUMPI JUMP JUMPDEST SWAP3 SWAP2 SWAP1 PUSH2 0x161B DUP2 PUSH2 0x11FF JUMP JUMPDEST SWAP4 PUSH2 0x1629 PUSH1 0x40 MLOAD SWAP6 DUP7 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP6 DUP4 DUP2 MSTORE ADD SWAP2 PUSH1 0x5 SHL DUP2 ADD SWAP2 DUP4 DUP4 GT PUSH2 0x1B4 JUMPI DUP2 SWAP1 JUMPDEST DUP4 DUP3 LT PUSH2 0x164F JUMPI POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 SWAP2 PUSH2 0x166F DUP8 DUP5 SWAP4 DUP8 ADD PUSH2 0x1425 JUMP JUMPDEST DUP2 MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x168B DUP4 DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x1 DUP2 MSTORE SWAP2 PUSH1 0x1F NOT ADD DUP3 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x16A3 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x16B2 DUP2 PUSH2 0x1171 JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 DUP4 DUP3 ADD MSTORE DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x1697 JUMP JUMPDEST SWAP1 PUSH2 0x16D0 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x16DD PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x16EE PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH1 0x20 CALLDATASIZE SWAP2 ADD CALLDATACOPY JUMP JUMPDEST SWAP1 CALLDATALOAD SWAP1 PUSH1 0x1E NOT DUP2 CALLDATASIZE SUB ADD DUP3 SLT ISZERO PUSH2 0x1B4 JUMPI ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD SWAP2 PUSH1 0x60 DUP3 MUL CALLDATASIZE SUB DUP4 SGT PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x173A DUP3 PUSH2 0x11C2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x120 DUP4 PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE PUSH0 DUP4 DUP3 ADD MSTORE PUSH0 PUSH1 0x80 DUP3 ADD MSTORE PUSH0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH0 PUSH1 0xC0 DUP3 ADD MSTORE PUSH0 PUSH1 0xE0 DUP3 ADD MSTORE PUSH0 PUSH2 0x100 DUP3 ADD MSTORE ADD MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x6 PUSH2 0x120 PUSH1 0x40 MLOAD PUSH2 0x1789 DUP2 PUSH2 0x11C2 JUMP JUMPDEST PUSH2 0x1819 DUP2 SWAP6 DUP1 SLOAD DUP4 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x2 DUP3 ADD SLOAD DUP2 DUP2 AND PUSH1 0x40 DUP7 ADD MSTORE DUP2 DUP2 PUSH1 0x40 SHR AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 SHR AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB PUSH1 0x4 DUP3 ADD SLOAD AND PUSH1 0xC0 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x5 DUP3 ADD SLOAD PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xE0 DUP7 ADD MSTORE PUSH1 0xA0 SHR AND ISZERO ISZERO PUSH2 0x100 DUP5 ADD MSTORE PUSH2 0x1812 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP4 ADD PUSH2 0x1389 JUMP JUMPDEST SUB DUP5 PUSH2 0x11DE JUMP JUMPDEST ADD MSTORE JUMP JUMPDEST PUSH0 NOT DUP2 EQ PUSH2 0x132D JUMPI PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x1973 JUMPI JUMPDEST POP PUSH2 0x1964 JUMPI DUP2 PUSH2 0x18FD PUSH1 0x20 PUSH2 0x194E SWAP5 ADD MLOAD SWAP2 PUSH1 0x40 DUP2 ADD MLOAD SWAP4 PUSH1 0x60 DUP3 ADD SWAP4 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP3 MLOAD SWAP2 PUSH1 0x20 DUP3 MLOAD SWAP3 ADD MLOAD DUP5 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SWAP3 DUP4 SLOAD SWAP4 PUSH2 0x1896 DUP6 PUSH2 0x181D JUMP JUMPDEST SWAP1 SSTORE MLOAD AND SWAP3 PUSH1 0x40 MLOAD SWAP5 PUSH1 0x20 DUP7 ADD SWAP7 PUSH32 0xB5D556F07587EC0F08CF386545CC4362C702A001650C2058002615EE5C9D1E75 DUP9 MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD MSTORE PUSH1 0xE0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 MSTORE PUSH2 0x18F5 PUSH2 0x100 DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x2F5C JUMP JUMPDEST SWAP1 MLOAD PUSH1 0x20 DUP4 DUP2 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP6 MLOAD DUP2 MLOAD SWAP4 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xF8 SWAP4 SWAP1 SWAP4 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x41 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1949 PUSH1 0x61 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH2 0x2F82 JUMP JUMPDEST ISZERO PUSH2 0x1955 JUMPI JUMP JUMPDEST PUSH4 0x8BAA579F PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x1AB7DA6B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND GT PUSH0 PUSH2 0x1844 JUMP JUMPDEST MLOAD SWAP1 DUP2 ISZERO ISZERO DUP3 SUB PUSH2 0x1B4 JUMPI JUMP JUMPDEST PUSH1 0x20 DUP2 DUP4 SUB SLT PUSH2 0x1B4 JUMPI DUP1 MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI ADD SWAP1 PUSH1 0x80 DUP3 DUP3 SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH1 0x80 DUP4 ADD DUP4 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR PUSH2 0x115D JUMPI PUSH1 0x40 MSTORE DUP1 MLOAD DUP4 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 SUB PUSH2 0x1B4 JUMPI PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1A01 PUSH1 0x40 DUP3 ADD PUSH2 0x1986 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP2 ADD MLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x1B4 JUMPI ADD DUP2 PUSH1 0x1F DUP3 ADD SLT ISZERO PUSH2 0x1B4 JUMPI DUP1 MLOAD SWAP1 PUSH2 0x1A32 DUP3 PUSH2 0x140A JUMP JUMPDEST SWAP3 PUSH2 0x1A40 PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP5 MSTORE PUSH1 0x20 DUP4 DUP4 ADD ADD GT PUSH2 0x1B4 JUMPI DUP2 PUSH0 SWAP3 PUSH1 0x20 DUP1 SWAP4 ADD DUP4 DUP7 ADD MCOPY DUP4 ADD ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP1 PUSH2 0x1A70 DUP3 PUSH2 0x11FF JUMP JUMPDEST PUSH2 0x1A7D PUSH1 0x40 MLOAD SWAP2 DUP3 PUSH2 0x11DE JUMP JUMPDEST DUP3 DUP2 MSTORE DUP1 SWAP3 PUSH2 0x1A8E PUSH1 0x1F NOT SWAP2 PUSH2 0x11FF JUMP JUMPDEST ADD SWAP1 PUSH0 JUMPDEST DUP3 DUP2 LT PUSH2 0x1A9E JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x20 SWAP1 PUSH2 0x1AA9 PUSH2 0x172D JUMP JUMPDEST DUP3 DUP3 DUP6 ADD ADD MSTORE ADD PUSH2 0x1A92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 PUSH0 DUP3 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP2 DUP3 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP3 PUSH2 0x1CB1 JUMPI JUMPDEST POP DUP2 MLOAD ISZERO PUSH2 0x1C93 JUMPI DUP1 MLOAD PUSH2 0x1B1D DUP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP4 PUSH2 0x1B27 DUP3 PUSH2 0x16C6 JUMP JUMPDEST SWAP6 TIMESTAMP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP4 PUSH0 JUMPDEST DUP5 DUP2 LT PUSH2 0x1B50 JUMPI POP POP POP POP POP POP SWAP2 PUSH2 0x111D SWAP4 SWAP2 PUSH1 0x1 SWAP4 PUSH2 0x30CA JUMP JUMPDEST PUSH2 0x1B5A DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP1 DUP2 MLOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD ISZERO PUSH2 0x1CA2 JUMPI DUP6 PUSH1 0x1 DUP5 ADD SLOAD SUB PUSH2 0x1C93 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 SWAP1 DUP2 AND DUP3 SWAP1 SUB PUSH2 0x1C84 JUMPI PUSH1 0xA0 SHR PUSH1 0xFF AND ISZERO PUSH2 0x1C75 JUMPI PUSH1 0x2 DUP5 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 SLOAD PUSH1 0x80 SHR AND PUSH2 0x1C66 JUMPI DUP3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL NOT AND PUSH1 0x80 DUP12 SWAP1 SHL PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x80 SHL AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP4 DUP8 SWAP3 SWAP1 DUP13 SWAP1 PUSH2 0x1C01 SWAP1 DUP7 SWAP1 PUSH2 0x1BFB SWAP1 PUSH2 0x1777 JUMP JUMPDEST PUSH2 0x1777 JUMP JUMPDEST SWAP3 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x1C0C DUP5 DUP14 PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x1C1C DUP6 DUP16 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH32 0xF930A6E2523C9CC298691873087A740550B8FC85A0680830414C148ED927F615 PUSH1 0x20 DUP14 PUSH1 0xC0 PUSH2 0x1C53 DUP9 DUP11 DUP1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x130C JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 ADD PUSH2 0x1B35 JUMP JUMPDEST PUSH4 0x905E7107 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x157BD4C3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x4CA88867 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x5F9BD907 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0xC5723B51 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH2 0x1CCE SWAP2 SWAP3 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1993 JUMP JUMPDEST SWAP1 PUSH0 PUSH2 0x1B0A JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x1E88 JUMPI JUMPDEST POP DUP1 MLOAD ISZERO PUSH2 0x1C93 JUMPI DUP7 MLOAD PUSH2 0x1D4C DUP2 PUSH2 0x1A66 JUMP JUMPDEST SWAP3 PUSH2 0x1D56 DUP3 PUSH2 0x16C6 JUMP JUMPDEST SWAP5 PUSH0 SWAP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP11 JUMPDEST DUP5 DUP2 LT PUSH2 0x1D7C JUMPI POP POP POP POP POP PUSH2 0x111D SWAP6 SWAP7 POP PUSH2 0x30CA JUMP JUMPDEST PUSH2 0x1D86 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP1 DUP2 MLOAD PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP3 SLOAD ISZERO PUSH2 0x1CA2 JUMPI DUP6 PUSH1 0x1 DUP5 ADD SLOAD SUB PUSH2 0x1C93 JUMPI PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 SWAP1 DUP2 AND DUP3 SWAP1 SUB PUSH2 0x1C84 JUMPI PUSH1 0xA0 SHR PUSH1 0xFF AND ISZERO PUSH2 0x1C75 JUMPI PUSH1 0x2 DUP5 ADD SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 SLOAD PUSH1 0x80 SHR AND PUSH2 0x1C66 JUMPI DUP16 PUSH1 0x1 SWAP6 PUSH2 0x1BF6 PUSH2 0x1E19 SWAP3 DUP12 SWAP7 SWAP1 DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1E23 DUP6 DUP14 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x1E2E DUP5 DUP13 PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x1E3E DUP6 DUP15 PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH32 0xF930A6E2523C9CC298691873087A740550B8FC85A0680830414C148ED927F615 PUSH1 0x20 DUP13 PUSH1 0xC0 PUSH2 0x1E75 DUP9 DUP11 DUP1 PUSH1 0xA0 SHL SUB SWAP4 PUSH2 0x130C JUMP JUMPDEST MLOAD ADD MLOAD AND SWAP3 MLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG4 ADD PUSH2 0x1D65 JUMP JUMPDEST PUSH2 0x1E9C SWAP2 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST PUSH0 PUSH2 0x1D39 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 PUSH0 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP1 DUP3 PUSH0 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH2 0x1F17 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 DUP4 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 AND DUP4 NOT DUP3 SLOAD AND OR SWAP1 SSTORE AND SWAP2 PUSH32 0x92A1F7A41A7C585A8B09E25B195E225B1D43248DACA46B0FAF9E0792777A2229 PUSH0 DUP1 LOG4 JUMP JUMPDEST PUSH4 0xEC9D6EEB PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x203B JUMPI JUMPDEST POP PUSH2 0x1964 JUMPI DUP2 PUSH2 0x18FD PUSH1 0x20 PUSH2 0x194E SWAP5 ADD MLOAD SWAP2 PUSH1 0x40 DUP2 ADD MLOAD SWAP4 PUSH1 0x60 DUP3 ADD SWAP4 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND SWAP3 MLOAD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP3 MLOAD AND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND SWAP1 PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP3 ADD MLOAD SWAP1 PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0x20 DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 ADD MLOAD SWAP4 DUP9 PUSH0 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SWAP7 DUP8 SLOAD SWAP8 PUSH2 0x1FC3 DUP10 PUSH2 0x181D JUMP JUMPDEST SWAP1 SSTORE MLOAD AND SWAP7 PUSH1 0x40 MLOAD SWAP9 PUSH1 0x20 DUP11 ADD SWAP11 PUSH32 0xFEB2925A02BAE3DAE48D424A0437A2B6AC939AA9230DDC55A1A76F065D988076 DUP13 MSTORE PUSH1 0x40 DUP12 ADD MSTORE PUSH1 0x60 DUP11 ADD MSTORE PUSH1 0x80 DUP10 ADD MSTORE PUSH1 0xA0 DUP9 ADD MSTORE PUSH1 0xC0 DUP8 ADD MSTORE PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MSTORE PUSH2 0x120 DUP5 ADD MSTORE PUSH2 0x140 DUP4 ADD MSTORE PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x160 DUP2 MSTORE PUSH2 0x18F5 PUSH2 0x180 DUP3 PUSH2 0x11DE JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND GT PUSH0 PUSH2 0x1F3F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH2 0x205B DUP3 PUSH2 0x1171 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 DUP4 PUSH0 DUP2 MSTORE ADD MSTORE JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0xE0 MSTORE PUSH2 0x2074 PUSH2 0x204E JUMP JUMPDEST POP DUP1 MLOAD SWAP1 PUSH2 0x2080 PUSH2 0x204E JUMP JUMPDEST PUSH2 0x100 MSTORE PUSH2 0x208D DUP3 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH0 DUP2 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL DUP1 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 PUSH1 0x80 MSTORE PUSH2 0x261E JUMPI JUMPDEST POP PUSH1 0x80 MLOAD MLOAD ISZERO PUSH2 0x1C93 JUMPI SWAP1 SWAP2 PUSH2 0x20FE DUP4 PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH2 0x210A DUP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0xC0 MSTORE PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x213E JUMPI POP POP POP POP POP PUSH2 0x2132 PUSH1 0x1 PUSH1 0xE0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x80 MLOAD PUSH2 0x32B4 JUMP JUMPDEST PUSH2 0x100 MLOAD MSTORE PUSH2 0x100 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x214E DUP4 DUP3 SWAP8 SWAP4 SWAP5 SWAP6 SWAP7 SWAP8 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP2 PUSH1 0x20 DUP4 ADD SWAP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP8 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x260A JUMPI JUMPDEST POP PUSH2 0x25FB JUMPI PUSH1 0x40 PUSH1 0x80 MLOAD ADD MLOAD ISZERO DUP1 PUSH2 0x25EE JUMPI JUMPDEST PUSH2 0x1C75 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x60 DUP6 ADD MLOAD SWAP8 MLOAD AND SWAP7 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 MLOAD AND PUSH1 0x40 DUP7 ADD MLOAD ISZERO ISZERO SWAP1 PUSH1 0x80 DUP8 ADD MLOAD SWAP3 PUSH1 0x40 MLOAD SWAP11 PUSH2 0x21B7 DUP13 PUSH2 0x11C2 JUMP JUMPDEST PUSH0 DUP13 MSTORE DUP10 PUSH1 0x20 DUP14 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND PUSH1 0x40 DUP14 ADD MSTORE PUSH1 0x60 DUP13 ADD MSTORE PUSH0 PUSH1 0x80 DUP13 ADD MSTORE PUSH1 0xA0 DUP12 ADD MSTORE PUSH1 0xC0 DUP11 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP11 AND PUSH1 0xE0 DUP11 ADD MSTORE PUSH2 0x100 DUP10 ADD MSTORE PUSH2 0x120 DUP9 ADD MSTORE PUSH0 JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD DUP9 PUSH2 0x22D0 PUSH1 0x4 PUSH1 0x99 PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x20 PUSH1 0xE0 DUP7 ADD MLOAD SWAP6 PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 PUSH2 0x120 PUSH1 0xA0 DUP5 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP8 DUP8 DUP10 ADD SWAP14 DUP15 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x54 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x68 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x70 DUP7 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x78 DUP6 ADD MSTORE PUSH1 0x79 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP5 ADD MCOPY DUP2 ADD PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP9 PUSH1 0xE0 SHL AND DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1B NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH2 0x22F4 JUMPI POP PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND PUSH2 0x2200 JUMP JUMPDEST SWAP1 POP SWAP8 SWAP7 SWAP1 SWAP5 SWAP6 SWAP2 SWAP8 SWAP4 SWAP3 SWAP4 DUP1 DUP3 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP1 MLOAD DUP4 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE PUSH2 0x23A2 PUSH1 0x2 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT DUP3 SLOAD AND OR DUP2 SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL DUP3 SLOAD SWAP2 PUSH1 0x40 SHL AND SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP5 ADD MLOAD AND DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 ADD MLOAD PUSH1 0x3 DUP6 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH2 0x100 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ISZERO ISZERO SWAP1 SWAP3 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE PUSH2 0x120 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI DUP10 SWAP5 PUSH2 0x242C PUSH1 0x6 DUP5 ADD SLOAD PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2596 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x2528 JUMPI PUSH1 0x6 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x251D JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 PUSH2 0x24F9 JUMPI JUMPDEST POP SWAP4 PUSH1 0x1 SWAP5 PUSH2 0x2481 DUP6 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x248E DUP5 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x24A0 DUP6 PUSH1 0xC0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP2 PUSH2 0x24B3 DUP6 PUSH1 0x20 PUSH2 0x100 MLOAD ADD MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP5 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x8BF46BF4CFD674FA735A3D63EC1C9AD4153F033C290341F3A588B75685141B35 PUSH1 0x20 DUP7 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 LOG4 ADD SWAP2 SWAP3 SWAP1 PUSH2 0x2110 JUMP JUMPDEST PUSH2 0x2510 SWAP2 SWAP4 POP PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CA2 JUMPI DUP7 SWAP2 PUSH0 PUSH2 0x2470 JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2450 JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP5 ADD PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH2 0x257B JUMPI POP SWAP2 DUP4 SWAP2 PUSH1 0x1 SWAP4 PUSH1 0x6 SWAP6 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x2563 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP2 ADD SSTORE PUSH2 0x2465 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2555 JUMP JUMPDEST DUP2 DUP4 ADD MLOAD DUP5 SSTORE DUP14 SWAP9 POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2535 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 POP PUSH1 0x6 DUP5 ADD PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x25E7 JUMPI JUMPDEST SWAP1 DUP13 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x25D9 JUMPI POP POP PUSH2 0x2435 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP14 SWAP9 POP PUSH1 0x1 ADD PUSH2 0x25C3 JUMP JUMPDEST POP DUP1 PUSH2 0x25B9 JUMP JUMPDEST POP PUSH1 0x40 DUP5 ADD MLOAD ISZERO ISZERO PUSH2 0x217D JUMP JUMPDEST PUSH4 0x8E8B937 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND LT ISZERO PUSH0 PUSH2 0x216A JUMP JUMPDEST PUSH2 0x2631 SWAP1 RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH0 PUSH2 0x20E9 JUMP JUMPDEST SWAP2 SWAP3 SWAP4 SWAP1 SWAP4 PUSH1 0xC0 MSTORE PUSH1 0xE0 MSTORE PUSH2 0x264D PUSH2 0x204E JUMP JUMPDEST POP DUP3 MLOAD SWAP1 PUSH2 0x2659 PUSH2 0x204E JUMP JUMPDEST PUSH2 0x100 MSTORE PUSH2 0x2666 DUP3 PUSH2 0x16C6 JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH1 0x20 ADD MSTORE PUSH1 0x40 MLOAD PUSH4 0x51753E37 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP4 PUSH0 DUP6 PUSH1 0x24 DUP2 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GAS STATICCALL SWAP5 DUP6 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP6 PUSH2 0x2BDD JUMPI JUMPDEST POP DUP5 MLOAD ISZERO PUSH2 0x1C93 JUMPI SWAP1 PUSH2 0x26D4 DUP4 PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0x80 MSTORE PUSH2 0x26E0 DUP4 PUSH2 0x16C6 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH0 SWAP2 JUMPDEST DUP4 DUP4 LT PUSH2 0x270B JUMPI POP POP POP POP POP PUSH2 0x2132 SWAP1 PUSH1 0xE0 MLOAD SWAP1 PUSH1 0xC0 MLOAD SWAP1 PUSH1 0xA0 MLOAD SWAP1 PUSH1 0x80 MLOAD SWAP1 PUSH2 0x32B4 JUMP JUMPDEST SWAP1 SWAP3 SWAP5 SWAP2 SWAP4 SWAP6 PUSH2 0x271B DUP6 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD SWAP3 PUSH1 0x20 DUP5 ADD SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP9 MLOAD AND DUP1 ISZERO ISZERO SWAP1 DUP2 PUSH2 0x2BC9 JUMPI JUMPDEST POP PUSH2 0x25FB JUMPI PUSH1 0x40 DUP3 ADD MLOAD ISZERO DUP1 PUSH2 0x2BBC JUMPI JUMPDEST PUSH2 0x1C75 JUMPI PUSH1 0x60 DUP6 ADD MLOAD SWAP8 MLOAD DUP6 MLOAD PUSH1 0x40 DUP1 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD SWAP2 MLOAD SWAP12 SWAP2 SWAP4 SWAP1 ISZERO ISZERO SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP11 PUSH1 0x20 DUP15 PUSH2 0x278A DUP2 PUSH2 0x11C2 JUMP JUMPDEST PUSH0 DUP2 MSTORE ADD MSTORE DUP13 PUSH1 0x40 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND SWAP2 ADD MSTORE PUSH1 0x60 DUP14 ADD MSTORE PUSH0 PUSH1 0x80 DUP14 ADD MSTORE PUSH1 0xA0 DUP13 ADD MSTORE PUSH1 0xC0 DUP12 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND PUSH1 0xE0 DUP12 ADD MSTORE PUSH2 0x100 DUP11 ADD MSTORE PUSH2 0x120 DUP10 ADD MSTORE PUSH0 JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD DUP10 PUSH2 0x28A0 PUSH1 0x4 PUSH1 0x99 PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0x20 PUSH1 0xE0 DUP7 ADD MLOAD SWAP6 PUSH1 0x40 DUP2 ADD MLOAD SWAP1 PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x100 DUP3 ADD MLOAD ISZERO ISZERO SWAP1 PUSH2 0x120 PUSH1 0xA0 DUP5 ADD MLOAD SWAP4 ADD MLOAD SWAP4 PUSH1 0x40 MLOAD SWAP11 DUP12 SWAP8 DUP8 DUP10 ADD SWAP14 DUP15 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x40 DUP10 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 PUSH1 0x60 SHL AND PUSH1 0x54 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x68 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL SWAP1 PUSH1 0xC0 SHL AND PUSH1 0x70 DUP7 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x78 DUP6 ADD MSTORE PUSH1 0x79 DUP5 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP5 ADD MCOPY DUP2 ADD PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP9 PUSH1 0xE0 SHL AND DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1B NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO PUSH2 0x28C4 JUMPI POP PUSH1 0x1 ADD PUSH4 0xFFFFFFFF AND PUSH2 0x27D0 JUMP JUMPDEST SWAP1 POP SWAP9 SWAP7 SWAP2 SWAP8 SWAP1 SWAP6 SWAP5 SWAP3 SWAP9 DUP1 DUP3 MSTORE DUP1 PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP1 MLOAD DUP4 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 DUP5 ADD SSTORE PUSH2 0x2971 PUSH1 0x2 DUP5 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 PUSH1 0x40 DUP6 ADD MLOAD AND AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT DUP3 SLOAD AND OR DUP2 SSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL DUP3 SLOAD SWAP2 PUSH1 0x40 SHL AND SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF PUSH1 0x40 SHL NOT AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 DUP5 ADD MLOAD AND DUP2 SLOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL SWAP1 PUSH1 0x80 SHL AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x80 SHL NOT AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 ADD MLOAD PUSH1 0x3 DUP6 ADD SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x4 DUP6 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0xE0 DUP4 ADD MLOAD PUSH1 0x5 DUP7 ADD DUP1 SLOAD PUSH2 0x100 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP4 AND SWAP2 SWAP1 SWAP2 OR SWAP2 ISZERO ISZERO SWAP1 SWAP3 SHL PUSH1 0xFF PUSH1 0xA0 SHL AND OR SWAP1 SSTORE PUSH2 0x120 DUP2 ADD MLOAD DUP1 MLOAD SWAP1 SWAP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x115D JUMPI DUP9 SWAP5 PUSH2 0x29FB PUSH1 0x6 DUP5 ADD SLOAD PUSH2 0x1351 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x2B64 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x2AF6 JUMPI PUSH1 0x6 SWAP3 SWAP2 PUSH0 SWAP2 DUP4 PUSH2 0x2AEB JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP2 ADD SSTORE JUMPDEST PUSH1 0x60 DUP6 ADD MLOAD DUP1 PUSH2 0x2AC7 JUMPI JUMPDEST POP SWAP4 PUSH1 0x1 SWAP5 PUSH2 0x2A50 DUP6 PUSH1 0x80 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE PUSH2 0x2A5D DUP5 PUSH1 0x80 MLOAD PUSH2 0x130C JUMP JUMPDEST POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0x2A6F DUP6 PUSH1 0xA0 MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP2 PUSH2 0x2A82 DUP6 PUSH1 0x20 PUSH2 0x100 MLOAD ADD MLOAD PUSH2 0x130C JUMP JUMPDEST MSTORE DUP5 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND PUSH1 0x40 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x8BF46BF4CFD674FA735A3D63EC1C9AD4153F033C290341F3A588B75685141B35 PUSH1 0x20 DUP7 DUP1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP4 LOG4 ADD SWAP2 SWAP1 PUSH2 0x26E6 JUMP JUMPDEST PUSH2 0x2ADE SWAP2 SWAP4 POP PUSH0 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1CA2 JUMPI DUP6 SWAP2 PUSH0 PUSH2 0x2A3F JUMP JUMPDEST ADD MLOAD SWAP1 POP PUSH0 DUP1 PUSH2 0x2A1F JUMP JUMPDEST SWAP1 PUSH1 0x6 DUP5 ADD PUSH0 MSTORE DUP1 PUSH0 KECCAK256 SWAP2 PUSH0 JUMPDEST PUSH1 0x1F NOT DUP6 AND DUP2 LT PUSH2 0x2B49 JUMPI POP SWAP2 DUP4 SWAP2 PUSH1 0x1 SWAP4 PUSH1 0x6 SWAP6 PUSH1 0x1F NOT DUP2 AND LT PUSH2 0x2B31 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP2 ADD SSTORE PUSH2 0x2A34 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE PUSH0 DUP1 DUP1 PUSH2 0x2B23 JUMP JUMPDEST DUP2 DUP4 ADD MLOAD DUP5 SSTORE DUP13 SWAP9 POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2B03 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 POP PUSH1 0x6 DUP5 ADD PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT PUSH2 0x2BB5 JUMPI JUMPDEST SWAP1 DUP12 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 JUMPDEST PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP3 ADD DUP2 LT PUSH2 0x2BA7 JUMPI POP POP PUSH2 0x2A04 JUMP JUMPDEST PUSH0 DUP2 SSTORE DUP13 SWAP9 POP PUSH1 0x1 ADD PUSH2 0x2B91 JUMP JUMPDEST POP DUP1 PUSH2 0x2B87 JUMP JUMPDEST POP PUSH1 0x40 DUP6 ADD MLOAD ISZERO ISZERO PUSH2 0x2748 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB TIMESTAMP AND LT ISZERO PUSH0 PUSH2 0x2737 JUMP JUMPDEST PUSH2 0x2BF2 SWAP2 SWAP6 POP RETURNDATASIZE DUP1 PUSH0 DUP4 RETURNDATACOPY PUSH2 0x1CC6 DUP2 DUP4 PUSH2 0x11DE JUMP JUMPDEST SWAP4 PUSH0 PUSH2 0x26C2 JUMP JUMPDEST SWAP1 PUSH2 0x2C03 SWAP1 PUSH2 0x16C6 JUMP JUMPDEST SWAP1 PUSH0 DUP2 MLOAD SWAP2 PUSH0 JUMPDEST DUP4 DUP2 LT PUSH2 0x2C18 JUMPI POP POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2C22 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 MLOAD PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x2C3A JUMPI POP POP POP PUSH1 0x1 ADD PUSH2 0x2C0A JUMP JUMPDEST SWAP1 SWAP2 SWAP5 PUSH1 0x1 DUP1 SWAP2 PUSH2 0x2C4B DUP9 DUP6 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x2C56 DUP3 DUP13 PUSH2 0x130C JUMP JUMPDEST MSTORE ADD SWAP6 ADD SWAP2 SWAP1 PUSH2 0x2C28 JUMP JUMPDEST SWAP1 DUP2 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x40 PUSH0 KECCAK256 SLOAD AND PUSH2 0x2CC4 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP3 PUSH0 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 DUP3 DUP3 AND DUP4 NOT DUP3 SLOAD AND OR SWAP1 SSTORE AND SWAP1 PUSH32 0x5AAFCEEB1C7AD58E4A84898BDEE37C02C0FC46E7D24E6B60E8209449F183459F PUSH0 DUP1 LOG3 JUMP JUMPDEST PUSH4 0x17133CA3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x2E1D JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x2E02 JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x2DEE JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x2DDD JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x2DCE JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x2DC0 JUMPI JUMPDEST LT ISZERO PUSH2 0x2DB5 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x2D5A DUP6 PUSH2 0x140A JUMP JUMPDEST SWAP5 PUSH2 0x2D68 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x11DE JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x2D77 PUSH1 0x1F NOT SWAP2 PUSH2 0x140A JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x2DB0 JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x2D82 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2D48 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D41 JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D37 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D2C JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D1F JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x2D0F JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x2CF5 JUMP JUMPDEST ADDRESS PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x2F33 JUMPI JUMPDEST ISZERO PUSH2 0x2E9B JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x2F2D PUSH1 0xC0 DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x2E72 JUMP JUMPDEST PUSH1 0x42 SWAP1 PUSH2 0x2F67 PUSH2 0x2E40 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1901 PUSH1 0xF0 SHL DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE KECCAK256 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 DUP3 EXTCODESIZE PUSH2 0x2FD1 JUMPI SWAP1 PUSH2 0x2F94 SWAP2 PUSH2 0x3520 JUMP JUMPDEST POP PUSH1 0x4 DUP2 LT ISZERO PUSH2 0x2FBD JUMPI ISZERO SWAP2 DUP3 PUSH2 0x2FAA JUMPI POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH0 SWAP3 PUSH2 0x3007 PUSH2 0x3015 DUP6 SWAP5 PUSH1 0x40 MLOAD SWAP3 DUP4 SWAP2 PUSH1 0x20 DUP4 ADD SWAP6 PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP8 MSTORE PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x40 PUSH1 0x44 DUP5 ADD MSTORE PUSH1 0x64 DUP4 ADD SWAP1 PUSH2 0xFC4 JUMP JUMPDEST SUB PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x11DE JUMP JUMPDEST MLOAD SWAP2 GAS STATICCALL PUSH2 0x3021 PUSH2 0x34F1 JUMP JUMPDEST DUP2 PUSH2 0x304F JUMPI JUMPDEST DUP2 PUSH2 0x3030 JUMPI POP SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 DUP1 MLOAD DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH1 0x20 ADD MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 MLOAD LT ISZERO SWAP1 PUSH2 0x3027 JUMP JUMPDEST SWAP3 SWAP2 PUSH1 0x40 DUP5 ADD SWAP4 PUSH1 0x40 DUP2 MSTORE DUP3 MLOAD DUP1 SWAP6 MSTORE PUSH1 0x60 DUP2 ADD SWAP5 PUSH1 0x20 PUSH1 0x60 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD SWAP5 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT PUSH2 0x309F JUMPI POP POP POP PUSH2 0x111D SWAP4 SWAP5 POP PUSH1 0x20 DUP2 DUP5 SUB SWAP2 ADD MSTORE PUSH2 0x104B JUMP JUMPDEST SWAP1 SWAP2 SWAP5 PUSH1 0x20 DUP1 PUSH2 0x30BB PUSH1 0x1 SWAP4 PUSH1 0x5F NOT DUP9 DUP3 SUB ADD DUP13 MSTORE DUP10 MLOAD PUSH2 0x107E JUMP JUMPDEST SWAP8 ADD SWAP9 ADD SWAP2 ADD SWAP7 SWAP2 SWAP1 SWAP7 PUSH2 0x3082 JUMP JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP5 PUSH1 0x1 DUP7 EQ PUSH2 0x328E JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x324F JUMPI PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP7 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3215 JUMPI JUMPDEST POP SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x31B9 JUMPI POP POP POP SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x3147 SWAP4 DUP8 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH4 0x88E5B2D9 PUSH1 0xE0 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x305D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x317F JUMPI JUMPDEST POP ISZERO PUSH2 0x3170 JUMPI PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH2 0x111D SWAP1 PUSH2 0x372E JUMP JUMPDEST PUSH4 0xBF2F3A8B PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x31B1 JUMPI JUMPDEST DUP2 PUSH2 0x319A PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x31AB SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3159 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x318D JUMP JUMPDEST SWAP1 SWAP2 SWAP8 SWAP7 PUSH2 0x31C7 DUP10 DUP8 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x320A JUMPI DUP3 ISZERO PUSH2 0x31FB JUMPI DUP2 DUP2 GT PUSH2 0x31EC JUMPI DUP1 PUSH1 0x1 SWAP3 SUB SWAP9 ADD SWAP9 JUMPDEST ADD SWAP2 SWAP1 PUSH2 0x3118 JUMP JUMPDEST PUSH4 0x44044A5 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST PUSH4 0x1574F9F3 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP SWAP7 SWAP8 PUSH1 0x1 SWAP1 PUSH2 0x31E4 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3247 JUMPI JUMPDEST DUP2 PUSH2 0x3230 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3241 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3113 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3223 JUMP JUMPDEST POP POP PUSH0 SWAP4 SWAP2 SWAP3 SWAP4 JUMPDEST DUP3 DUP2 LT PUSH2 0x3277 JUMPI POP POP POP PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3273 SWAP1 PUSH2 0x372E JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3281 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x31FB JUMPI PUSH1 0x1 ADD PUSH2 0x3257 JUMP JUMPDEST SWAP1 PUSH2 0x111D SWAP6 POP SWAP2 PUSH2 0x32AD PUSH2 0x32A6 PUSH1 0x1 SWAP5 SWAP7 SWAP6 SWAP7 PUSH2 0x12FF JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x12FF JUMP JUMPDEST MLOAD SWAP2 PUSH2 0x355A JUMP JUMPDEST SWAP4 SWAP2 SWAP1 DUP1 MLOAD SWAP5 PUSH1 0x1 DUP7 EQ PUSH2 0x3444 JUMPI PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x3412 JUMPI PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 SWAP7 SWAP1 PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x33D8 JUMPI JUMPDEST POP SWAP1 PUSH0 SWAP2 JUMPDEST DUP2 DUP4 LT PUSH2 0x339A JUMPI POP POP POP SWAP2 PUSH1 0x20 SWAP2 PUSH2 0x3331 SWAP4 DUP8 PUSH1 0x40 MLOAD DUP1 SWAP7 DUP2 SWAP6 DUP3 SWAP5 PUSH4 0x48ED85BF PUSH1 0xE1 SHL DUP5 MSTORE PUSH1 0x4 DUP5 ADD PUSH2 0x305D JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3360 JUMPI JUMPDEST POP ISZERO PUSH2 0x3351 JUMPI PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH4 0xE8BEE839 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3392 JUMPI JUMPDEST DUP2 PUSH2 0x337B PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x338C SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3343 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x336E JUMP JUMPDEST SWAP1 SWAP2 SWAP8 SWAP7 PUSH2 0x33A8 DUP10 DUP8 PUSH2 0x130C JUMP JUMPDEST MLOAD DUP1 ISZERO PUSH2 0x33CD JUMPI DUP3 ISZERO PUSH2 0x31FB JUMPI DUP2 DUP2 GT PUSH2 0x31EC JUMPI DUP1 PUSH1 0x1 SWAP3 SUB SWAP9 ADD SWAP9 JUMPDEST ADD SWAP2 SWAP1 PUSH2 0x3302 JUMP JUMPDEST POP SWAP7 SWAP8 PUSH1 0x1 SWAP1 PUSH2 0x33C5 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x340A JUMPI JUMPDEST DUP2 PUSH2 0x33F3 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3404 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x32FD JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x33E6 JUMP JUMPDEST POP POP PUSH0 SWAP4 SWAP2 SWAP3 SWAP4 JUMPDEST DUP3 DUP2 LT PUSH2 0x342D JUMPI POP POP POP PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x3437 DUP2 DUP4 PUSH2 0x130C JUMP JUMPDEST MLOAD PUSH2 0x31FB JUMPI PUSH1 0x1 ADD PUSH2 0x341A JUMP JUMPDEST SWAP1 PUSH2 0x111D SWAP6 POP SWAP2 PUSH2 0x32AD PUSH2 0x32A6 PUSH0 SWAP5 SWAP7 SWAP6 SWAP7 PUSH2 0x12FF JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x34A1 JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x3492 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x347F PUSH1 0x40 DUP5 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP5 MSTORE DUP4 DUP2 ADD SWAP2 SWAP1 CALLDATASIZE DUP4 CALLDATACOPY DUP4 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x2CD44AC3 PUSH1 0xE2 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D DUP2 PUSH2 0x34B3 DUP2 PUSH0 PUSH2 0x1389 JUMP JUMPDEST SUB DUP3 PUSH2 0x11DE JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0x34DE JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0x3492 JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x347F PUSH1 0x40 DUP5 PUSH2 0x11DE JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D DUP2 PUSH2 0x34B3 DUP2 PUSH1 0x1 PUSH2 0x1389 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x351B JUMPI RETURNDATASIZE SWAP1 PUSH2 0x3502 DUP3 PUSH2 0x140A JUMP JUMPDEST SWAP2 PUSH2 0x3510 PUSH1 0x40 MLOAD SWAP4 DUP5 PUSH2 0x11DE JUMP JUMPDEST DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY JUMP JUMPDEST PUSH1 0x60 SWAP1 JUMP JUMPDEST DUP2 MLOAD SWAP2 SWAP1 PUSH1 0x41 DUP4 SUB PUSH2 0x3550 JUMPI PUSH2 0x3549 SWAP3 POP PUSH1 0x20 DUP3 ADD MLOAD SWAP1 PUSH1 0x60 PUSH1 0x40 DUP5 ADD MLOAD SWAP4 ADD MLOAD PUSH0 BYTE SWAP1 PUSH2 0x378A JUMP JUMPDEST SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST POP POP PUSH0 SWAP2 PUSH1 0x2 SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP2 SWAP5 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x371C JUMPI SWAP1 DUP6 SWAP3 SWAP2 DUP4 PUSH2 0x369F JUMPI JUMPDEST PUSH1 0x20 SWAP3 SWAP2 SWAP1 ISZERO PUSH2 0x3618 JUMPI PUSH2 0x35AE SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH4 0xE49617E1 PUSH1 0xE0 SHL DUP4 MSTORE DUP8 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x35DE JUMPI JUMPDEST POP ISZERO PUSH2 0x35CF JUMPI JUMPDEST PUSH2 0x3167 JUMPI POP SWAP1 JUMP JUMPDEST PUSH4 0xCCF3BB27 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3610 JUMPI JUMPDEST DUP2 PUSH2 0x35F9 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x360A SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x35C0 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x35EC JUMP JUMPDEST PUSH2 0x363F SWAP2 PUSH1 0x40 MLOAD SWAP5 DUP6 DUP1 SWAP5 DUP2 SWAP4 PUSH4 0xE60C3505 PUSH1 0xE0 SHL DUP4 MSTORE DUP8 PUSH1 0x4 DUP5 ADD MSTORE PUSH1 0x24 DUP4 ADD SWAP1 PUSH2 0x107E JUMP JUMPDEST SUB SWAP3 GAS CALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x3665 JUMPI JUMPDEST POP PUSH2 0x35C7 JUMPI PUSH4 0xBD8BA84D PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3697 JUMPI JUMPDEST DUP2 PUSH2 0x3680 PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x3691 SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x3651 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x3673 JUMP JUMPDEST SWAP5 SWAP2 SWAP1 SWAP3 POP PUSH1 0x40 MLOAD PUSH4 0x67237023 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 DUP2 PUSH1 0x4 DUP2 DUP8 GAS STATICCALL SWAP1 DUP2 ISZERO PUSH2 0x1CD5 JUMPI PUSH0 SWAP2 PUSH2 0x36E2 JUMPI JUMPDEST POP ISZERO PUSH2 0x31FB JUMPI DUP2 DUP7 GT PUSH2 0x31EC JUMPI SWAP1 DUP6 SWAP1 SUB SWAP4 DUP6 SWAP3 SWAP1 PUSH2 0x357D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 RETURNDATASIZE PUSH1 0x20 GT PUSH2 0x3714 JUMPI JUMPDEST DUP2 PUSH2 0x36FD PUSH1 0x20 SWAP4 DUP4 PUSH2 0x11DE JUMP JUMPDEST DUP2 ADD SUB SLT PUSH2 0x1B4 JUMPI PUSH2 0x370E SWAP1 PUSH2 0x1986 JUMP JUMPDEST PUSH0 PUSH2 0x36C8 JUMP JUMPDEST RETURNDATASIZE SWAP2 POP PUSH2 0x36F0 JUMP JUMPDEST POP POP POP SWAP1 SWAP2 PUSH2 0x31FB JUMPI PUSH2 0x326A JUMPI POP PUSH0 SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x3736 JUMPI POP JUMP JUMPDEST DUP1 SELFBALANCE LT PUSH2 0x3774 JUMPI PUSH0 DUP1 DUP1 DUP1 SWAP4 CALLER GAS CALL PUSH2 0x374D PUSH2 0x34F1 JUMP JUMPDEST SWAP1 ISZERO PUSH2 0x3756 JUMPI POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3765 JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD REVERT JUMPDEST PUSH4 0xD6BDA275 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST SELFBALANCE PUSH4 0xCF479181 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0x3801 JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0x1CD5 JUMPI PUSH0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x37F7 JUMPI SWAP1 PUSH0 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP PUSH0 SWAP1 PUSH1 0x1 SWAP1 PUSH0 SWAP1 JUMP JUMPDEST POP POP POP PUSH0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH31 0xE7D0784D1E2F31FE3051B5C9419341FC69728B5548377F2D9A8B661C25766C PUSH5 0x736F6C6343 STOP ADDMOD SHL STOP CALLER ",
              "sourceMap": "169:89:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;3044:58:1;2963:31;;3044:66;2963:31;169:89:26;2963:31:1;;:::i;:::-;169:89:26;3014:12:1;;169:89:26;3014:12:1;;;;:::i;:::-;169:89:26;:::i;:::-;3004:22:1;;;:::i;:::-;;;;;:::i;:::-;;3086:9;3074:10;;169:89:26;;3044:58:1;:::i;:::-;:63;;:66;:::i;:::-;169:89:26;;;;;;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;2773:15:1;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;2475:20:7;;:::i;:::-;169:89:26;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;:::i;:::-;6500:15:7;-1:-1:-1;;;;;6500:15:7;169:89:26;14628:13:1;169:89:26;14643:10:1;;;;;;169:89:26;;;;;;;;14655:19:1;14701:7;14710:4;14701:7;;1489:1:0;14701:7:1;;;;:::i;:::-;169:89:26;14710:4:1;:::i;:::-;169:89:26;14628:13:1;;169:89:26;;;;;;-1:-1:-1;;169:89:26;;;;;;;;-1:-1:-1;169:89:26;15013:3:1;169:89:26;;;-1:-1:-1;169:89:26;;15013:25:1;;14928:117;;169:89:26;;;;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;;;15160:11:1;169:89:26;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;-1:-1:-1;;;;;6500:15:7;169:89:26;14064:4:1;169:89:26;;;14046:10:1;14064:4;:::i;169:89:26:-;;;;;;-1:-1:-1;;169:89:26;;;;;;;1451:66:7;169:89:26;;;;;;;;;-1:-1:-1;;169:89:26;;;;-1:-1:-1;;;;;169:89:26;;:::i;:::-;;;;15321:20:1;169:89:26;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;169:89:26;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;9575:31:1;169:89:26;;9737:81:1;169:89:26;;;9575:31:1;:::i;:::-;9655:30;;:::i;:::-;169:89:26;;;:::i;:::-;9695:31:1;;;:::i;:::-;;;;;:::i;:::-;;9802:9;9737:81;;:::i;:::-;169:89:26;;;;;;;-1:-1:-1;;169:89:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;:::i;:::-;6363:23:1;;;:::i;:::-;169:89:26;;6396:25:1;;-1:-1:-1;;169:89:26;;;6860:9:1;;169:89:26;6900:10:1;;;;;;169:89:26;9106:36:1;;;;:::i;:::-;169:89:26;;;;;;;:::i;6912:19:1:-;7393:25;;;;;;;;;:::i;:::-;7473:26;;169:89:26;7473:26:1;;;;:::i;:::-;7614:15;;;;;:72;;;;6912:19;7610:133;;7877:13;;169:89:26;7877:13:1;;;8148:32;169:89:26;8148:32:1;;8219:30;;;;169:89:26;8285:30:1;169:89:26;;8285:30:1;;169:89:26;;-1:-1:-1;;;;;169:89:26;;;;;;7872:499:1;7908:19;7892:14;;;;;;169:89:26;;8148:32:1;169:89:26;;;;;;;;;:::i;:::-;8148:32:1;;:::i;:::-;169:89:26;;;;;8219:30:1;;;;;:::i;:::-;169:89:26;;;;;;;;7982:356:1;169:89:26;;7297:1:1;169:89:26;;;;;;;:::i;:::-;;;;;;:::i;:::-;;7982:356:1;;169:89:26;;;8219:30:1;169:89:26;;;;:::i;:::-;;7982:356:1;;169:89:26;;;;;;;8219:30:1;7982:356;;169:89:26;8285:30:1;7982:356;;169:89:26;7982:356:1;:::i;:::-;169:89:26;7877:13:1;;169:89:26;;;;;;;;;;;;7892:14:1;;;;;;;;;8475:191;7892:14;;;;;;;7297:1;7892:14;;169:89:26;8793:31:1;7892:14;;;;8568:30;7892:14;169:89:26;7892:14:1;7283:15;8568:30;;:::i;:::-;169:89:26;;;;:::i;:::-;8475:191:1;;:::i;:::-;169:89:26;;;8793:31:1;;:::i;:::-;8906:8;;;;8891:23;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;8973:8:1;169:89:26;;;6885:13:1;;;;;169:89:26;6885:13:1;;7610:133;12704:15;;;169:89:26;7713:15:1;169:89:26;;7713:15:1;7614:72;7647:32;;169:89:26;7647:32:1;;;;:::i;:::-;7633:53;;;;;7614:72;;169:89:26;;;;;;-1:-1:-1;;169:89:26;;;;;6183:41:20;:5;:41;:::i;:::-;169:89:26;6638:47:20;:8;:47;:::i;:::-;169:89:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5674:13:20;;169:89:26;;;;5709:4:20;169:89:26;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;169:89:26;;;;;;3647:10:7;169:89:26;;3639:7:7;169:89:26;;;;;;3672:20:7;;;;;3668:72;;3796:58;3647:10;169:89:26;3647:10:7;;169:89:26;;3639:7:7;169:89:26;;;;;;;;;;;;;;;;3796:58:7;169:89:26;3668:72:7;3715:14;;;169:89:26;3715:14:7;169:89:26;;3715:14:7;169:89:26;;;;;;-1:-1:-1;;169:89:26;;;;;1055:104:6;;169:89:26;1072:24:6;1089:6;1072:24;:::i;:::-;1120:6;;1103:24;1120:6;1103:24;:::i;:::-;1151:6;;1134:24;1151:6;1134:24;:::i;:::-;169:89:26;;;;;;;;;;;;1055:104:6;;;169:89:26;;;;-1:-1:-1;;;169:89:26;;;;;;;;;;;;;;;;;-1:-1:-1;;;169:89:26;;;;;;;;;;;;;;;;;;;;;1055:104:6;;;;;;;;;;:::i;:::-;169:89:26;;;;;1055:104:6;169:89:26;;1055:104:6;169:89:26;;;;:::i;:::-;;;;;;-1:-1:-1;;169:89:26;;;;;-1:-1:-1;;;;;6500:15:7;169:89:26;13859:4:1;169:89:26;;;13859:4:1;:::i;169:89:26:-;;;-1:-1:-1;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;:::i;:::-;-1:-1:-1;;169:89:26;;;10381:9:1;169:89:26;;10381:9:1;10468:10;;;;;;169:89:26;10480:19:1;10942:16;;;;;:::i;:::-;169:89:26;11132:17:1;;169:89:26;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;10865:1:1;10851:15;;11103:81;10851:15;11085:99;10851:15;169:89:26;10851:15:1;;;11151:10;;169:89:26;;;;:::i;:::-;;;11103:81:1;:::i;:::-;11085:99;;:::i;:::-;10480:19;169:89:26;10453:13:1;;;169:89:26;;;-1:-1:-1;;169:89:26;;;;9370:58:1;9297:30;;:::i;:::-;169:89:26;;;:::i;:::-;9337:22:1;;;:::i;:::-;;;;;:::i;:::-;;9412:9;9400:10;;169:89:26;;;9370:58:1;:::i;169:89:26:-;;;-1:-1:-1;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;:::i;:::-;3964:23:1;;;;:::i;:::-;3997:25;169:89:26;4461:9:1;;4486:13;169:89:26;;;;;;4481:1287:1;4501:10;;;;;;169:89:26;5861:36:1;;;;:::i;4513:19::-;5034:16;;;;;;;;;;:::i;:::-;5114:17;169:89:26;5114:17:1;;;;;;;:::i;:::-;:29;;;5110:90;;5548:31;5246:175;5308:17;;;;169:89:26;5308:17:1;4898:1;5308:17;169:89:26;5308:17:1;;:::i;:::-;4884:15;;;;5343:10;;169:89:26;;;;:::i;:::-;;;5246:175:1;:::i;:::-;169:89:26;;;5548:31:1;;:::i;:::-;5661:8;;;;5646:23;;;;:::i;:::-;;;;;;:::i;:::-;;5728:8;169:89:26;;4513:19:1;169:89:26;4486:13:1;;;;;;169:89:26;;;-1:-1:-1;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;3500:25:1;3461:90;169:89:26;;3461:82:1;169:89:26;3290:31:1;169:89:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;3290:31:1;:::i;:::-;3422:21;3371:31;;:::i;:::-;169:89:26;;3422:21:1;;:::i;169:89:26:-;3412:31:1;;;:::i;:::-;;;;;:::i;:::-;;3500:25;:::i;:::-;3527:9;;3461:82;;:::i;169:89:26:-;;;;;;-1:-1:-1;;169:89:26;;;;-1:-1:-1;;;;;169:89:26;;:::i;:::-;;;;2728:7:7;169:89:26;;;;;;;;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;;3381:5:7;169:89:26;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3381:5:7;169:89:26;;;;;;;-1:-1:-1;169:89:26;;;;;;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;;;;;;;-1:-1:-1;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;:::i;:::-;6500:15:7;-1:-1:-1;;;;;6500:15:7;169:89:26;14294:13:1;169:89:26;14309:10:1;;;;;;169:89:26;;;;;;;;14321:19:1;14384:7;14393:4;14384:7;;1489:1:0;14384:7:1;;;;:::i;:::-;169:89:26;14372:10:1;14393:4;:::i;:::-;169:89:26;14294:13:1;;169:89:26;;;;;;-1:-1:-1;;169:89:26;;;;;;;1124:66:7;169:89:26;;;;;;-1:-1:-1;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;:::i;:::-;-1:-1:-1;;169:89:26;;;;;11801:9:1;11897:10;;;;;;169:89:26;11909:19:1;12387:25;;;;;:::i;:::-;169:89:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;12464:26:1;169:89:26;;;12605:15:1;;;:72;;;;;169:89:26;12601:133:1;;;169:89:26;12883:14:1;;;;;;-1:-1:-1;;169:89:26;;;;12294:1:1;;13485:208;;169:89:26;;13503:190:1;;-1:-1:-1;12280:15:1;;;;-1:-1:-1;169:89:26;;-1:-1:-1;;;;;169:89:26;;13503:190:1;:::i;13485:208::-;11909:19;169:89:26;11882:13:1;;;12899:19;12294:1;169:89:26;12973:353:1;169:89:26;;13094:7:1;;;;:::i;:::-;;13138:35;:32;;;:35;:::i;:::-;;169:89:26;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;:::i;:::-;;;;12973:353:1;;169:89:26;;12973:353:1;;169:89:26;;12973:353:1;;169:89:26;;12973:353:1;;169:89:26;12973:353:1;:::i;:::-;169:89:26;12868:13:1;;12605:72;169:89:26;;;12624:53:1;;;12605:72;;;169:89:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;169:89:26;;;;;;;;-1:-1:-1;;169:89:26;;;;:::o;:::-;;;;-1:-1:-1;;;;;169:89:26;;;;;;:::o;:::-;;;-1:-1:-1;;;;;169:89:26;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;169:89:26;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;:::o;:::-;;;;-1:-1:-1;169:89:26;;;;;-1:-1:-1;169:89:26;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;:::o;:::-;;;1055:104:6;;169:89:26;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;:::o;:::-;-1:-1:-1;;;;;169:89:26;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;9347:12:1;169:89:26;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;169:89:26;;;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;169:89:26;;;;;;;;-1:-1:-1;169:89:26;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;169:89:26;;;;;;-1:-1:-1;;169:89:26;;;;:::o;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;3400:1:1;169:89:26;;;-1:-1:-1;;169:89:26;;-1:-1:-1;169:89:26;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;;;;;;-1:-1:-1;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;169:89:26;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1055:104:6;169:89:26;1055:104:6;;169:89:26;;:::i;:::-;;;-1:-1:-1;169:89:26;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;9325:1:1;169:89:26;;;-1:-1:-1;;169:89:26;;-1:-1:-1;169:89:26;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1055:104:6;169:89:26;1055:104:6;;169:89:26;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;240:1:0:-;-1:-1:-1;;240:1:0;;;;;;;:::o;5278:988:7:-;5367:16;;;-1:-1:-1;;;;;169:89:26;;;5367:38:7;;;:68;;;;5278:988;5363:123;;;5532:12;5626:367;5532:12;6021:178;5532:12;;;5583:17;;;;;5752:15;;;;169:89:26;;;;;;;;;;;;5532:12:7;169:89:26;;5855:10:7;;169:89:26;;-1:-1:-1;169:89:26;5887:7:7;5532:12;169:89:26;-1:-1:-1;;;;;5583:17:7;-1:-1:-1;169:89:26;;;;5887:26:7;;;;:::i;:::-;169:89:26;;;;;5583:17:7;169:89:26;5683:286:7;5532:12;5683:286;;169:89:26;1451:66:7;169:89:26;;5583:17:7;240:1:0;;169:89:26;5752:15:7;240:1:0;;169:89:26;5367:16:7;240:1:0;;169:89:26;240:1:0;;;169:89:26;240:1:0;;;169:89:26;240:1:0;;;169:89:26;240:1:0;5683:286:7;;;;;;:::i;:::-;169:89:26;5656:327:7;;5626:367;:::i;:::-;169:89:26;;5532:12:7;6147:11;;;169:89:26;5583:17:7;6160:11;;;169:89:26;240:1:0;;169:89:26;;6130:55:7;;;169:89:26;;;;240:1:0;;169:89:26;;;;240:1:0;;;;;-1:-1:-1;;;;;;240:1:0;;;;;6130:55:7;;;-1:-1:-1;;;;;169:89:26;6130:55:7;240:1:0;169:89:26;6130:55:7;:::i;:::-;6021:178;:::i;:::-;6020:179;6003:257;;5278:988::o;6003:257::-;6231:18;;;-1:-1:-1;6231:18:7;;-1:-1:-1;6231:18:7;5363:123;5458:17;;;-1:-1:-1;5458:17:7;;-1:-1:-1;5458:17:7;5367:68;6500:15;;-1:-1:-1;;;;;6500:15:7;169:89:26;-1:-1:-1;5367:68:7;;;169:89:26;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;169:89:26;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;1055:104:6;169:89:26;1055:104:6;;169:89:26;;:::i;:::-;;;-1:-1:-1;169:89:26;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;;;;19220:2157:1;169:89:26;;-1:-1:-1;;;19537:36:1;;;;;169:89:26;;;19220:2157:1;;-1:-1:-1;169:89:26;19537:36:1;169:89:26;19537:15:1;-1:-1:-1;;;;;169:89:26;19537:36:1;;;;;;;-1:-1:-1;19537:36:1;;;19220:2157;169:89:26;;;19587:29:1;19583:82;;169:89:26;;19749:25:1;;;:::i;:::-;19810:21;;;;:::i;:::-;19847:13;6500:15:7;-1:-1:-1;;;;;169:89:26;;-1:-1:-1;19862:10:1;;;;;;21286:84;;;;;;;;;;9325:1;21286:84;;:::i;19874:19::-;19948:7;;;;:::i;:::-;;169:89:26;;;-1:-1:-1;169:89:26;19537:36:1;169:89:26;;;-1:-1:-1;169:89:26;;;;20125:28:1;20121:84;;20295:18;9325:1;20295:18;;169:89:26;20295:31:1;20291:92;;20476:20;;;169:89:26;-1:-1:-1;;;;;169:89:26;;;;;;;20476:31:1;;;20472:91;;169:89:26;;;;20773:22:1;20769:81;;20950:26;;;169:89:26;-1:-1:-1;;;;;169:89:26;;;;;20946:93:1;;169:89:26;;-1:-1:-1;;;;169:89:26;;;;;-1:-1:-1;;;169:89:26;;;;;9325:1:1;;21052:36;;-1:-1:-1;21052:36:1;;21103:29;;21052:36;;169:89:26;;;:::i;21052:36:1:-;169:89:26;:::i;:::-;21103:29:1;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;169:89:26;21158:13:1;;169:89:26;21146:25:1;21158:13;;21146:25;:::i;:::-;169:89:26;21191:67:1;169:89:26;;21199:25:1;:15;169:89:26;;;;;;21199:15:1;;:::i;:::-;;:25;169:89:26;;;;;;;;;21191:67:1;169:89:26;19847:13:1;;20946:93;21008:16;;;-1:-1:-1;21008:16:1;19537:36;-1:-1:-1;21008:16:1;20769:81;20822:13;;;-1:-1:-1;20822:13:1;19537:36;-1:-1:-1;20822:13:1;20472:91;20534:14;;;-1:-1:-1;20534:14:1;19537:36;-1:-1:-1;20534:14:1;20291:92;19639:15;;;-1:-1:-1;20353:15:1;19537:36;-1:-1:-1;20353:15:1;20121:84;20180:10;;;-1:-1:-1;20180:10:1;19537:36;-1:-1:-1;20180:10:1;19537:36;;;;;;;-1:-1:-1;19537:36:1;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;169:89:26;;;-1:-1:-1;169:89:26;;;;;19220:2157:1;169:89:26;;-1:-1:-1;;;19537:36:1;;;;;169:89:26;;;19220:2157:1;;;;;;-1:-1:-1;169:89:26;19537:36:1;169:89:26;19537:15:1;-1:-1:-1;;;;;169:89:26;19537:36:1;;;;;;;-1:-1:-1;19537:36:1;;;19220:2157;169:89:26;;;19587:29:1;19583:82;;169:89:26;;19749:25:1;;;:::i;:::-;19810:21;;;;:::i;:::-;19847:13;-1:-1:-1;6500:15:7;-1:-1:-1;;;;;6500:15:7;169:89:26;19842:1427:1;19862:10;;;;;;21286:84;;;;;;;;;;:::i;19874:19::-;19948:7;;;;:::i;:::-;;169:89:26;;;-1:-1:-1;169:89:26;19537:36:1;169:89:26;;;-1:-1:-1;169:89:26;;;;20125:28:1;20121:84;;20295:18;1489:1:0;20295:18:1;;169:89:26;20295:31:1;20291:92;;20476:20;;;169:89:26;-1:-1:-1;;;;;169:89:26;;;;;;;20476:31:1;;;20472:91;;169:89:26;;;;20773:22:1;20769:81;;20950:26;;;169:89:26;-1:-1:-1;;;;;169:89:26;;;;;20946:93:1;;21052:36;1489:1:0;21052:36:1;;169:89:26;21052:36:1;;;169:89:26;;;;-1:-1:-1;;;;;169:89:26;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;21103:29:1;;;;:::i;:::-;;;;;;:::i;:::-;-1:-1:-1;169:89:26;21158:13:1;;169:89:26;21146:25:1;21158:13;;21146:25;:::i;:::-;169:89:26;21191:67:1;169:89:26;;21199:25:1;:15;169:89:26;;;;;;21199:15:1;;:::i;:::-;;:25;169:89:26;;;;;;;;;21191:67:1;169:89:26;19847:13:1;;19537:36;;;;;;-1:-1:-1;19537:36:1;;;;;;:::i;:::-;;;;28242:368;169:89:26;;;;;;;;-1:-1:-1;169:89:26;28393:20:1;169:89:26;;;-1:-1:-1;169:89:26;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;;;;;169:89:26;-1:-1:-1;169:89:26;;;28433:84:1;;-1:-1:-1;;;;;169:89:26;;-1:-1:-1;169:89:26;;;;-1:-1:-1;169:89:26;;;;;;;;;;;;;28567:36:1;;-1:-1:-1;28567:36:1;;28242:368::o;28433:84::-;28482:24;;;-1:-1:-1;28482:24:1;;-1:-1:-1;28482:24:1;3995:1151:7;4085:16;;;-1:-1:-1;;;;;169:89:26;;;4085:38:7;;;:68;;;;3995:1151;4081:123;;;4251:12;4345:527;4251:12;4900:179;4251:12;;;4302:17;;;;;4471:16;;;;169:89:26;;;;;;;;;;;;;;;;;;;;4581:19:7;-1:-1:-1;;;;;4251:12:7;4581:19;;169:89:26;;4622:14:7;4302:17;4622:14;;169:89:26;;;4471:16:7;4658:11;;169:89:26;4701:9:7;4733:10;4085:16;4701:9;;;4251:12;169:89:26;;;;4691:20:7;4733:10;;169:89:26;;;-1:-1:-1;169:89:26;4765:7:7;4251:12;169:89:26;-1:-1:-1;;;;;4302:17:7;-1:-1:-1;169:89:26;;;;4765:27:7;;;;:::i;:::-;169:89:26;;;;;4302:17:7;169:89:26;4402:446:7;4251:12;4402:446;;169:89:26;1124:66:7;169:89:26;;4302:17:7;169:89:26;;;4471:16:7;169:89:26;;;4085:16:7;169:89:26;;;4733:10:7;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;4402:446:7;;;;;;:::i;4085:68::-;6500:15;;-1:-1:-1;;;;;6500:15:7;169:89:26;-1:-1:-1;4085:68:7;;;169:89:26;;;;;;;:::i;:::-;;;;-1:-1:-1;169:89:26;;;;:::o;15846:2898:1:-;;;;;169:89:26;;:::i;:::-;;;;;;;:::i;:::-;16112:29:1;;16162:21;;;:::i;:::-;16151:8;;;;:32;169:89:26;;-1:-1:-1;;;16309:36:1;;;;;169:89:26;;;-1:-1:-1;169:89:26;16309:36:1;169:89:26;16309:15:1;-1:-1:-1;;;;;169:89:26;16309:36:1;;;;;;-1:-1:-1;16309:36:1;;;;15846:2898;16359:16;;;169:89:26;16359:29:1;16355:82;;16483:25;;;;;:::i;:::-;;;16544:21;;;:::i;:::-;;;-1:-1:-1;16576:2029:1;16596:10;;;;;;18631:85;;;;;;3400:1;18631:85;;;;;;;;;:::i;:::-;169:89:26;;;18727:10:1;;15846:2898;:::o;16608:19::-;16683:7;;;;;;;;;;:::i;:::-;;16804:22;16151:8;16804:22;;169:89:26;-1:-1:-1;;;;;169:89:26;;;16804:44:1;;;:81;;;;16608:19;16800:150;;;169:89:26;17073:22:1;;;169:89:26;;17072:44:1;;;16608:19;17068:103;;-1:-1:-1;;;;;17323:14:1;;;169:89:26;;;;;;;;;;;;;;17570:17:1;;169:89:26;;;17611:12:1;;;;;169:89:26;;;;;;;:::i;:::-;-1:-1:-1;169:89:26;;17218:420:1;16151:8;17218:420;;169:89:26;-1:-1:-1;;;;;6500:15:7;169:89:26;;17218:420:1;;169:89:26;17323:14:1;17218:420;;169:89:26;-1:-1:-1;17611:12:1;17218:420;;169:89:26;17218:420:1;;;169:89:26;17218:420:1;;;169:89:26;;;;;;;;;17218:420:1;;169:89:26;17218:420:1;;;169:89:26;17218:420:1;;;169:89:26;-1:-1:-1;17818:247:1;16151:8;17218:420;;169:89:26;17218:420:1;26697:392;16309:36;169:89:26;17218:420:1;;;169:89:26;16151:8:1;169:89:26;17218:420:1;;169:89:26;17218:420:1;169:89:26;17218:420:1;;169:89:26;17218:420:1;17323:14;17218:420;;169:89:26;17218:420:1;;;169:89:26;;;17218:420:1;;;;;169:89:26;17218:420:1;;27029:16;169:89:26;;;26697:392:1;;;;;;169:89:26;;;-1:-1:-1;;;;;169:89:26;;17323:14:1;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;17323:14:1;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;17218:420:1;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;17218:420:1;169:89:26;;;;;;240:1:0;;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26697:392:1;;;;;;;;;;;:::i;:::-;169:89:26;26670:433:1;;169:89:26;-1:-1:-1;169:89:26;16309:36:1;16151:8;169:89:26;;-1:-1:-1;169:89:26;;17903:25:1;17899:77;;-1:-1:-1;3400:1:1;169:89:26;;;17818:247:1;;17899:77;17952:5;;;;;;;;;;;;169:89:26;;;;-1:-1:-1;169:89:26;16309:36:1;16151:8;169:89:26;;-1:-1:-1;169:89:26;;;;;;16151:8:1;17218:420;;169:89:26;3400:1:1;169:89:26;;;;;;;-1:-1:-1;;;;;17218:420:1;169:89:26;17218:420:1;;169:89:26;;;-1:-1:-1;;;;;169:89:26;;;;;;;17323:14:1;17218:420;;169:89:26;-1:-1:-1;;;169:89:26;;;;;;;-1:-1:-1;;;169:89:26;;;;;-1:-1:-1;;;;;17611:12:1;17218:420;;169:89:26;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;17218:420:1;;;;169:89:26;;;;;17218:420:1;;;169:89:26;16309:36:1;169:89:26;;;;-1:-1:-1;;;;;;169:89:26;-1:-1:-1;;;;;169:89:26;;;;;;;17218:420:1;;169:89:26;;;;;;17218:420:1;;;169:89:26;-1:-1:-1;;;;;;169:89:26;;;;;;;;;;;;;;;;;-1:-1:-1;;;169:89:26;;;;17218:420:1;;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;:::i;:::-;;;;;;17818:247:1;169:89:26;16151:8:1;169:89:26;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;;3400:1:1;169:89:26;;;;;;;;;;;;;;;17323:14:1;;;169:89:26;18155:27:1;18151:256;;169:89:26;18421:29:1;;3400:1;18421:29;;;;;;:::i;:::-;;;;;;;:::i;:::-;;17218:420;18476:13;;169:89:26;18464:25:1;;;;;:::i;:::-;169:89:26;16151:8:1;18504:17;16151:8;;;;;18504;:17;:::i;:::-;169:89:26;;;;;;;;;;;;;;18541:53:1;16151:8;169:89:26;;;;;;;18541:53:1;;169:89:26;16581:13:1;;;;;18151:256;18299:34;;;;-1:-1:-1;169:89:26;15013:3:1;169:89:26;;;-1:-1:-1;169:89:26;;15013:25:1;;14928:117;;18299:34;18298:35;18294:99;;18151:256;;;;;169:89:26;;;;-1:-1:-1;169:89:26;;;;;;;;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;-1:-1:-1;;169:89:26;;;;;;1055:104:6;;;;3400:1:1;1055:104:6;169:89:26;1055:104:6;;;169:89:26;;;;;;;;;;;;;;;;;;;;;;240:1:0;169:89:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3400:1:1;169:89:26;;;;16151:8:1;169:89:26;;;;;;;;;;;;;;;;;;-1:-1:-1;169:89:26;16151:8:1;-1:-1:-1;169:89:26;;;;;;;;16151:8:1;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;3400:1:1;169:89:26;;;;;;;;17072:44:1;17099:17;169:89:26;17099:17:1;;169:89:26;;;17072:44:1;;16800:150;16912:23;;;-1:-1:-1;16912:23:1;16309:36;-1:-1:-1;16912:23:1;16804:81;6500:15:7;;-1:-1:-1;;;;;6500:15:7;169:89:26;-1:-1:-1;16852:33:1;16804:81;;;16309:36;;;;;-1:-1:-1;16309:36:1;;;;;;:::i;:::-;;;;;;15846:2898;;;;;;;;;;169:89:26;;:::i;:::-;;;;;;;:::i;:::-;16112:29:1;;16162:21;;;:::i;:::-;16151:8;;;;:32;169:89:26;;-1:-1:-1;;;16309:36:1;;;;;169:89:26;;;;-1:-1:-1;169:89:26;16309:36:1;169:89:26;16309:15:1;-1:-1:-1;;;;;169:89:26;16309:36:1;;;;;;;-1:-1:-1;16309:36:1;;;15846:2898;169:89:26;;;16359:29:1;16355:82;;16483:25;;;;:::i;:::-;;;16544:21;;;:::i;:::-;;;-1:-1:-1;16576:2029:1;16596:10;;;;;;18631:85;;;;;;;;;;;;;;;;;;;;:::i;16608:19::-;16683:7;;;;;;;;;;:::i;:::-;;16804:22;16151:8;16804:22;;169:89:26;-1:-1:-1;;;;;169:89:26;;;16804:44:1;;;:81;;;;16608:19;16800:150;;;169:89:26;17073:22:1;;169:89:26;;17072:44:1;;;16608:19;17068:103;;17323:14;;;169:89:26;;;;;;17570:17:1;;;169:89:26;17611:12:1;;;;169:89:26;;;17611:12:1;;169:89:26;;;;-1:-1:-1;;;;;169:89:26;;;-1:-1:-1;;;;;169:89:26;;16151:8:1;169:89:26;;;;:::i;:::-;-1:-1:-1;169:89:26;;17218:420:1;169:89:26;6500:15:7;169:89:26;-1:-1:-1;;;;;6500:15:7;169:89:26;17218:420:1;;169:89:26;17323:14:1;17218:420;;169:89:26;-1:-1:-1;17611:12:1;17218:420;;169:89:26;17218:420:1;;;169:89:26;17218:420:1;;;169:89:26;;;;;;;;;17218:420:1;;169:89:26;17218:420:1;;;169:89:26;17218:420:1;;;169:89:26;-1:-1:-1;17818:247:1;16151:8;17218:420;;169:89:26;17218:420:1;26697:392;16309:36;169:89:26;17218:420:1;;;169:89:26;16151:8:1;169:89:26;17218:420:1;;169:89:26;17218:420:1;169:89:26;17218:420:1;;169:89:26;17218:420:1;17323:14;17218:420;;169:89:26;17218:420:1;;;169:89:26;;;17218:420:1;;;;;169:89:26;17218:420:1;;27029:16;169:89:26;;;26697:392:1;;;;;;169:89:26;;;-1:-1:-1;;;;;169:89:26;;17323:14:1;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;17323:14:1;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;17218:420:1;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;17218:420:1;169:89:26;;;;;;240:1:0;;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26697:392:1;;;;;;;;;;;:::i;:::-;169:89:26;26670:433:1;;169:89:26;-1:-1:-1;169:89:26;16309:36:1;16151:8;169:89:26;;-1:-1:-1;169:89:26;;17903:25:1;17899:77;;-1:-1:-1;1489:1:0;169:89:26;;;17818:247:1;;17899:77;17952:5;;;;;;;;;;;169:89:26;;;;-1:-1:-1;169:89:26;16309:36:1;16151:8;169:89:26;;-1:-1:-1;169:89:26;;;;;;16151:8:1;17218:420;;169:89:26;1489:1:0;169:89:26;;;;;;;-1:-1:-1;;;;;17218:420:1;169:89:26;17218:420:1;;169:89:26;;;-1:-1:-1;;;;;169:89:26;;;;;;;17323:14:1;17218:420;;169:89:26;-1:-1:-1;;;169:89:26;;;;;;;-1:-1:-1;;;169:89:26;;;;;-1:-1:-1;;;;;17611:12:1;17218:420;;169:89:26;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;17218:420:1;;;;169:89:26;;;;;17218:420:1;;;169:89:26;16309:36:1;169:89:26;;;;-1:-1:-1;;;;;;169:89:26;-1:-1:-1;;;;;169:89:26;;;;;;;17218:420:1;;169:89:26;;;;;;17218:420:1;;;169:89:26;-1:-1:-1;;;;;;169:89:26;;;;;;;;;;;;;;;;;-1:-1:-1;;;169:89:26;;;;17218:420:1;;;169:89:26;;;;;;-1:-1:-1;;;;;169:89:26;;;;;;;;;;;;:::i;:::-;;;;;;17818:247:1;169:89:26;16151:8:1;169:89:26;;;;;;;;;;;-1:-1:-1;;169:89:26;;;;;;;1489:1:0;169:89:26;;;;;;;;;;;;;;;17323:14:1;;;169:89:26;18155:27:1;18151:256;;169:89:26;18421:29:1;;1489:1:0;18421:29:1;;;;;;:::i;:::-;;;;;;;:::i;:::-;;17218:420;18476:13;;169:89:26;18464:25:1;;;;;:::i;:::-;169:89:26;16151:8:1;18504:17;16151:8;;;;;18504;:17;:::i;:::-;169:89:26;;;;;;;;;;;;;;18541:53:1;16151:8;169:89:26;;;;;;;18541:53:1;;169:89:26;16581:13:1;;;;18151:256;18299:34;;;;-1:-1:-1;169:89:26;15013:3:1;169:89:26;;;-1:-1:-1;169:89:26;;15013:25:1;;14928:117;;18299:34;18298:35;18294:99;;18151:256;;;;;169:89:26;;;;-1:-1:-1;169:89:26;;;;;;;;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;;-1:-1:-1;169:89:26;-1:-1:-1;;169:89:26;;;;;;1055:104:6;;;;1489:1:0;1055:104:6;169:89:26;1055:104:6;;;169:89:26;;;;;;;;;;;;;;;;;;;;;;240:1:0;169:89:26;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1489:1:0;169:89:26;;;;16151:8:1;169:89:26;;;;;;;;;;;;;;;;;;-1:-1:-1;169:89:26;16151:8:1;-1:-1:-1;169:89:26;;;;;;;;16151:8:1;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;169:89:26;;;;-1:-1:-1;1489:1:0;169:89:26;;;;;;;;17072:44:1;17099:17;169:89:26;17099:17:1;;169:89:26;;;17072:44:1;;16804:81;6500:15:7;;-1:-1:-1;;;;;6500:15:7;169:89:26;-1:-1:-1;16852:33:1;16804:81;;;16309:36;;;;;;;-1:-1:-1;16309:36:1;;;;;;:::i;:::-;;;;;28803:701;;28944:23;28803:701;28944:23;:::i;:::-;28978:24;29001:1;169:89:26;;29066:13:1;29001:1;29081:17;;;;;;29486:11;;;;28803:701;:::o;29100:19::-;29166:11;;;;:::i;:::-;;169:89:26;;29001:1:1;29251:215;29271:21;;;;;;29100:19;;;1489:1:0;169:89:26;29066:13:1;;29294:19;29354:14;;;1489:1:0;29354:14:1;;;;;;:::i;:::-;169:89:26;29333:35:1;;;;:::i;:::-;169:89:26;;29294:19:1;169:89:26;29256:13:1;;;;27816:225;;169:89:26;-1:-1:-1;169:89:26;27885:11:1;169:89:26;;-1:-1:-1;;;;;169:89:26;-1:-1:-1;169:89:26;;;27881:80:1;;-1:-1:-1;;;;;169:89:26;;-1:-1:-1;169:89:26;27885:11:1;169:89:26;;;-1:-1:-1;169:89:26;;;;;;;;;;;;;28011:23:1;;-1:-1:-1;28011:23:1;;27816:225::o;27881:80::-;27930:20;;;-1:-1:-1;27930:20:1;;-1:-1:-1;27930:20:1;1308:634:18;1430:17;-1:-1:-1;29282:17:23;-1:-1:-1;;;29282:17:23;;;29278:103;;1308:634:18;29398:17:23;29407:8;29978:7;29398:17;;;29394:103;;1308:634:18;29523:8:23;29514:17;;;29510:103;;1308:634:18;29639:7:23;29630:16;;;29626:100;;1308:634:18;29752:7:23;29743:16;;;29739:100;;1308:634:18;29865:7:23;29856:16;;;29852:100;;1308:634:18;29969:16:23;;29965:66;;1308:634:18;29978:7:23;1545:94:18;1450:1;169:89:26;;1488:18:18;169:89:26;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;1055:104:6;;169:89:26;;:::i;:::-;;;;;;;1545:94:18;;;1652:247;-1:-1:-1;;169:89:26;;-1:-1:-1;;;1706:111:18;;;;169:89:26;1706:111:18;169:89:26;1867:10:18;;1863:21;;29978:7:23;1652:247:18;;;;1863:21;1879:5;;1308:634;:::o;29965:66:23:-;30015:1;169:89:26;;;;29965:66:23;;29852:100;29865:7;29936:1;169:89:26;;;;29852:100:23;;;29739;29752:7;29823:1;169:89:26;;;;29739:100:23;;;29626;29639:7;29710:1;169:89:26;;;;29626:100:23;;;29510:103;29523:8;29596:2;169:89:26;;;;29510:103:23;;;29394;29407:8;29480:2;169:89:26;;;;29394:103:23;;;29278;-1:-1:-1;29364:2:23;;-1:-1:-1;;;;169:89:26;;29278:103:23;;3945:262:20;4029:4;4038:11;-1:-1:-1;;;;;169:89:26;4021:28:20;;:63;;3945:262;4017:184;;;4107:22;4100:29;:::o;4017:184::-;169:89:26;;4304:80:20;;;169:89:26;2079:95:20;169:89:26;;4326:11:20;169:89:26;2079:95:20;;169:89:26;4339:14:20;2079:95;;;169:89:26;4355:13:20;2079:95;;;169:89:26;4029:4:20;2079:95;;;169:89:26;2079:95:20;4304:80;;;;;;:::i;:::-;169:89:26;4294:91:20;;4160:30;:::o;4021:63::-;4070:14;;4053:13;:31;4021:63;;5017:176;3993:249:21;5017:176:20;5153:20;;:::i;:::-;3993:249:21;;;;-1:-1:-1;;;3993:249:21;;;;;;;;;;;5017:176:20;:::o;1494:429:22:-;;;1620:18;;;;1707:33;;;;:::i;:::-;169:89:26;;;;;;;1761:33:22;:56;;;;1754:63;;;:::o;1761:56::-;-1:-1:-1;;;;;169:89:26;;;;;1798:19:22;;1754:63;-1:-1:-1;1754:63:22:o;169:89:26:-;;;;;;;;;;;;1616:301:22;169:89:26;;;;2558:60:22;169:89:26;;;;2558:60:22;;;;;;;;;;;;;;;169:89:26;;;;;;;;;;;:::i;:::-;2558:60:22;1055:104:6;;2558:60:22;;;;;;:::i;:::-;2527:101;;;;;;:::i;:::-;2646:42;;;1616:301;2646:134;;;1848:58;;:::o;2646:134::-;169:89:26;;2558:60:22;169:89:26;;;2704:29:22;;169:89:26;;;;2558:60:22;2704:29;169:89:26;-1:-1:-1;;;2704:76:22;;1848:58::o;2646:42::-;169:89:26;;2558:60:22;169:89:26;;2669:19:22;;2646:42;;;169:89:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24099:2238:1;;;;169:89:26;;24417:11:1;1489:1:0;24417:11:1;;24413:146;;24596:21;;169:89:26;-1:-1:-1;;;;;169:89:26;;24631:31:1;;24627:406;;169:89:26;;-1:-1:-1;;;25104:20:1;;169:89:26;;;24596:21:1;169:89:26;25104:20:1;169:89:26;25104:20:1;;;;;;;;169:89:26;25104:20:1;;;24099:2238;25140:13;;169:89:26;25135:777:1;25155:10;;;;;;169:89:26;;;;24596:21:1;169:89:26;25959:67:1;169:89:26;;;;;;;;;;;;;25959:67:1;;25104:20;25959:67;;;:::i;:::-;;;;;;;;;;169:89:26;25959:67:1;;;25135:777;25958:68;;25954:134;;26241:58;;26309:21;24099:2238;:::o;26241:58::-;26273:14;;;:::i;25954:134::-;26053:20;;;169:89:26;26053:20:1;25104;169:89:26;26053:20:1;25959:67;;;24596:21;25959:67;;24596:21;25959:67;;;;;;24596:21;25959:67;;;:::i;:::-;;;169:89:26;;;;;;;:::i;:::-;25959:67:1;;;;;;-1:-1:-1;25959:67:1;;25167:19;25218:9;;;;;;;;:::i;:::-;169:89:26;25340:10:1;;25336:57;;25411:18;;25407:76;;25591:22;;;25587:87;;169:89:26;1489:1:0;169:89:26;;;;25167:19:1;25140:13;169:89:26;25140:13:1;;;;25587:87;25640:19;;;169:89:26;25640:19:1;25104:20;169:89:26;25640:19:1;25407:76;24875:12;;;169:89:26;25456:12:1;25104:20;169:89:26;25456:12:1;25336:57;25370:8;;;1489:1:0;25370:8:1;;;25104:20;;;24596:21;25104:20;;24596:21;25104:20;;;;;;24596:21;25104:20;;;:::i;:::-;;;169:89:26;;;;;;;:::i;:::-;25104:20:1;;;;;;-1:-1:-1;25104:20:1;;24627:406;24760:13;;169:89:26;24760:13:1;;;;24775:10;;;;;;24934:66;;;;;25014:8;169:89:26;25014:8:1;:::o;24934:66::-;24970:14;;;:::i;:::-;169:89:26;25014:8:1;:::o;24787:19::-;24830:9;;;;:::i;:::-;169:89:26;24826:80:1;;1489:1:0;169:89:26;24760:13:1;;24413:146;24485:15;24451:97;24485:15;;;24502:9;24485:15;1489:1:0;24485:15:1;;;;;:::i;:::-;;24502:9;;:::i;:::-;169:89:26;24451:97:1;;:::i;24099:2238::-;;;;169:89:26;;24417:11:1;24427:1;24417:11;;24413:146;;24596:21;;169:89:26;-1:-1:-1;;;;;169:89:26;;24631:31:1;;24627:406;;169:89:26;;-1:-1:-1;;;25104:20:1;;-1:-1:-1;;169:89:26;24596:21:1;169:89:26;25104:20:1;169:89:26;25104:20:1;;;;;;;;-1:-1:-1;25104:20:1;;;24099:2238;25140:13;;-1:-1:-1;25135:777:1;25155:10;;;;;;25922:309;;;;24596:21;25922:309;26109:67;25922:309;169:89:26;;;;;;;;;;;;26109:67:1;;25104:20;26109:67;;;:::i;:::-;;;;;;;;;;25922:309;26109:67;;;25135:777;26108:68;;26104:127;;26241:58;;26309:21;24099:2238;:::o;26104:127::-;26199:21;;;25922:309;26199:21;25104:20;25922:309;26199:21;26109:67;;;24596:21;26109:67;;24596:21;26109:67;;;;;;24596:21;26109:67;;;:::i;:::-;;;169:89:26;;;;;;;:::i;:::-;26109:67:1;;;;;;-1:-1:-1;26109:67:1;;25167:19;25218:9;;;;;;;;:::i;:::-;169:89:26;25340:10:1;;25336:57;;25411:18;;25407:76;;25591:22;;;25587:87;;169:89:26;24427:1:1;169:89:26;;;;25167:19:1;25140:13;169:89:26;25140:13:1;;;;25336:57;25370:8;;;24427:1;25370:8;;;25104:20;;;24596:21;25104:20;;24596:21;25104:20;;;;;;24596:21;25104:20;;;:::i;:::-;;;169:89:26;;;;;;;:::i;:::-;25104:20:1;;;;;;-1:-1:-1;25104:20:1;;24627:406;24760:13;;-1:-1:-1;24760:13:1;;;;24775:10;;;;;;24934:66;;;;;25014:8;-1:-1:-1;25014:8:1;:::o;24787:19::-;24830:9;;;;:::i;:::-;169:89:26;24826:80:1;;24427:1;169:89:26;24760:13:1;;24413:146;24485:15;24451:97;24485:15;;;24502:9;24485:15;-1:-1:-1;24485:15:1;;;;;:::i;3368:267:16:-;1390:66;3491:46;;1390:66;;;2625:40;;2679:11;2688:2;2679:11;;2675:69;;169:89:26;;;;;;;:::i;:::-;2311:2:16;169:89:26;;;;;;;1055:104:6;169:89:26;;;2324:106:16;;;3553:22;:::o;2675:69::-;2713:20;;;169:89:26;2713:20:16;;169:89:26;2713:20:16;3487:142;169:89:26;;;1390:66:16;;;;169:89:26;1390:66:16;:::i;:::-;;;;:::i;3368:267::-;1390:66;3491:46;;1390:66;;;2625:40;;2679:11;2688:2;2679:11;;2675:69;;169:89:26;;;;;;;:::i;3487:142:16:-;169:89:26;;;1390:66:16;;;;6668:16:20;1390:66:16;:::i;169:89:26:-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;169:89:26;;;;:::o;:::-;;;:::o;2129:778:19:-;169:89:26;;;2129:778:19;2319:2;2299:22;;2319:2;;2751:25;2535:196;;;;;;;;;;;;;;;-1:-1:-1;2535:196:19;2751:25;;:::i;:::-;2744:32;;;;;:::o;2295:606::-;2807:83;;2823:1;2807:83;2827:35;2807:83;;:::o;21968:1538:1:-;22249:21;;169:89:26;21968:1538:1;;;;;-1:-1:-1;;;;;169:89:26;;22284:31:1;;22280:309;;22693:10;;;;;22689:449;;21968:1538;22249:21;;23148:261;;;;;169:89:26;;;;;;;;;;;;;23185:44:1;;;;;;169:89:26;;;;;;:::i;:::-;23185:44:1;;;;;;;;;169:89:26;23185:44:1;;;23148:261;23184:45;;23180:110;;23148:261;23419:58;;23487:12;21968:1538;:::o;23180:110::-;23256:19;;;169:89:26;23256:19:1;23185:44;169:89:26;23256:19:1;23185:44;;;22249:21;23185:44;;22249:21;23185:44;;;;;;22249:21;23185:44;;;:::i;:::-;;;169:89:26;;;;;;;:::i;:::-;23185:44:1;;;;;;-1:-1:-1;23185:44:1;;23148:261;169:89:26;;;;;;;;;;;;;23311:44:1;;;;;;169:89:26;;;;;;:::i;:::-;23311:44:1;;;;;;;;;169:89:26;23311:44:1;;;23148:261;23310:45;23148:261;23306:103;23378:20;;;169:89:26;23378:20:1;23311:44;169:89:26;23378:20:1;23311:44;;;22249:21;23311:44;;22249:21;23311:44;;;;;;22249:21;23311:44;;;:::i;:::-;;;169:89:26;;;;;;;:::i;:::-;23311:44:1;;;;;;-1:-1:-1;23311:44:1;;22689:449;169:89:26;;;;;;;;;;22724:20:1;;22249:21;22724:20;;;;;;;;;;;169:89:26;22724:20:1;;;22689:449;22723:21;;22719:79;;22906:22;;;22902:87;;169:89:26;;;;;;;;22689:449:1;;22724:20;;;22249:21;22724:20;;22249:21;22724:20;;;;;;22249:21;22724:20;;;:::i;:::-;;;169:89:26;;;;;;;:::i;:::-;22724:20:1;;;;;;-1:-1:-1;22724:20:1;;22280:309;22412:10;;;;;22408:68;;22490:66;;22570:8;169:89:26;22570:8:1;:::o;27265:415::-;27328:18;27324:350;;27265:415;:::o;27324:350::-;1375:21:12;;:30;1371:125;;27345:1:1;27626:10;;;;;1548:33:12;;;;:::i;:::-;1595:8;;1591:58;;27265:415:1;:::o;1591:58:12:-;169:89:26;;5690:21:12;:17;;5815:105;;;;;;5686:301;5957:19;;;27345:1:1;5957:19:12;;27345:1:1;5957:19:12;1371:125;1455:21;1428:57;;;27345:1:1;1428:57:12;;169:89:26;;;;27345:1:1;1428:57:12;5203:1551:19;;;6283:66;6270:79;;6266:164;;169:89:26;;;;;;-1:-1:-1;169:89:26;;;;;;;;;;;;;;;;;;;6541:24:19;;;;;;;;;-1:-1:-1;6541:24:19;-1:-1:-1;;;;;169:89:26;;6579:20:19;6575:113;;6698:49;-1:-1:-1;6698:49:19;-1:-1:-1;5203:1551:19;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:19;6541:24;6615:62;-1:-1:-1;6615:62:19;:::o;6266:164::-;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o"
            },
            "methodIdentifiers": {
              "attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))": "f17325e7",
              "attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))": "3c042715",
              "eip712Domain()": "84b0196e",
              "getAttestTypeHash()": "12b11a17",
              "getAttestation(bytes32)": "a3112a64",
              "getDomainSeparator()": "ed24911d",
              "getName()": "17d7de7c",
              "getNonce(address)": "2d0335ab",
              "getRevokeOffchain(address,bytes32)": "b469318d",
              "getRevokeTypeHash()": "b83010d3",
              "getSchemaRegistry()": "f10b5cc8",
              "getTimestamp(bytes32)": "d45c4435",
              "increaseNonce(uint256)": "79f7573a",
              "isAttestationValid(bytes32)": "e30bb563",
              "multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])": "44adc90e",
              "multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])": "95411525",
              "multiRevoke((bytes32,(bytes32,uint256)[])[])": "4cb7e9e5",
              "multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])": "0eabf660",
              "multiRevokeOffchain(bytes32[])": "13893f61",
              "multiTimestamp(bytes32[])": "e71ff365",
              "revoke((bytes32,(bytes32,uint256)))": "46926267",
              "revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))": "a6d4dbc7",
              "revokeOffchain(bytes32)": "cf190f34",
              "timestamp(bytes32)": "4d003070",
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISchemaRegistry\",\"name\":\"registry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessDenied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyRevoked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyRevokedOffchain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyTimestamped\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DeadlineExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAttestation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAttestations\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExpirationTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOffset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRegistry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevocation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRevocations\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSchema\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidVerifier\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Irrevocable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongSchema\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"schemaUID\",\"type\":\"bytes32\"}],\"name\":\"Attested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"name\":\"NonceIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"schemaUID\",\"type\":\"bytes32\"}],\"name\":\"Revoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"RevokedOffchain\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"}],\"name\":\"Timestamped\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct AttestationRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"attest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature\",\"name\":\"signature\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct DelegatedAttestationRequest\",\"name\":\"delegatedRequest\",\"type\":\"tuple\"}],\"name\":\"attestByDelegation\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAttestTypeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"getAttestation\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"time\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revocationTime\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Attestation\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"getRevokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRevokeTypeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSchemaRegistry\",\"outputs\":[{\"internalType\":\"contract ISchemaRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"name\":\"increaseNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"isAttestationValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"internalType\":\"struct MultiAttestationRequest[]\",\"name\":\"multiRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiAttest\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"expirationTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"refUID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct AttestationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct MultiDelegatedAttestationRequest[]\",\"name\":\"multiDelegatedRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiAttestByDelegation\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"}],\"internalType\":\"struct MultiRevocationRequest[]\",\"name\":\"multiRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiRevoke\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData[]\",\"name\":\"data\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature[]\",\"name\":\"signatures\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct MultiDelegatedRevocationRequest[]\",\"name\":\"multiDelegatedRequests\",\"type\":\"tuple[]\"}],\"name\":\"multiRevokeByDelegation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"multiRevokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"multiTimestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData\",\"name\":\"data\",\"type\":\"tuple\"}],\"internalType\":\"struct RevocationRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"revoke\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"schema\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct RevocationRequestData\",\"name\":\"data\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct Signature\",\"name\":\"signature\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"revoker\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"internalType\":\"struct DelegatedRevocationRequest\",\"name\":\"delegatedRequest\",\"type\":\"tuple\"}],\"name\":\"revokeByDelegation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"revokeOffchain\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"timestamp\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}]},\"events\":{\"Attested(address,address,bytes32,bytes32)\":{\"params\":{\"attester\":\"The attesting account.\",\"recipient\":\"The recipient of the attestation.\",\"schemaUID\":\"The UID of the schema.\",\"uid\":\"The UID of the new attestation.\"}},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"NonceIncreased(uint256,uint256)\":{\"params\":{\"newNonce\":\"The new value.\",\"oldNonce\":\"The previous nonce.\"}},\"Revoked(address,address,bytes32,bytes32)\":{\"params\":{\"attester\":\"The attesting account.\",\"recipient\":\"The recipient of the attestation.\",\"schemaUID\":\"The UID of the schema.\",\"uid\":\"The UID the revoked attestation.\"}},\"RevokedOffchain(address,bytes32,uint64)\":{\"params\":{\"data\":\"The data.\",\"revoker\":\"The address of the revoker.\",\"timestamp\":\"The timestamp.\"}},\"Timestamped(bytes32,uint64)\":{\"params\":{\"data\":\"The data.\",\"timestamp\":\"The timestamp.\"}}},\"kind\":\"dev\",\"methods\":{\"attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))\":{\"params\":{\"request\":\"The arguments of the attestation request.\"},\"returns\":{\"_0\":\"The UID of the new attestation. Example:     attest({         schema: \\\"0facc36681cbe2456019c1b0d1e7bedd6d1d40f6f324bf3dd3a4cef2999200a0\\\",         data: {             recipient: \\\"0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf\\\",             expirationTime: 0,             revocable: true,             refUID: \\\"0x0000000000000000000000000000000000000000000000000000000000000000\\\",             data: \\\"0xF00D\\\",             value: 0         }     })\"}},\"attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"params\":{\"delegatedRequest\":\"The arguments of the delegated attestation request.\"},\"returns\":{\"_0\":\"The UID of the new attestation. Example:     attestByDelegation({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 0         },         signature: {             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         attester: '0xc5E8740aD971409492b1A63Db8d83025e0Fc427e',         deadline: 1673891048     })\"}},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"getAttestTypeHash()\":{\"returns\":{\"_0\":\"The EIP712 type hash for the attest function.\"}},\"getAttestation(bytes32)\":{\"params\":{\"uid\":\"The UID of the attestation to retrieve.\"},\"returns\":{\"_0\":\"The attestation data members.\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"The domain separator used in the encoding of the signatures for attest, and revoke.\"}},\"getName()\":{\"returns\":{\"_0\":\"The EIP712 name.\"}},\"getNonce(address)\":{\"params\":{\"account\":\"The requested account.\"},\"returns\":{\"_0\":\"The current nonce.\"}},\"getRevokeOffchain(address,bytes32)\":{\"params\":{\"data\":\"The data to query.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"getRevokeTypeHash()\":{\"returns\":{\"_0\":\"The EIP712 type hash for the revoke function.\"}},\"getSchemaRegistry()\":{\"returns\":{\"_0\":\"The address of the global schema registry.\"}},\"getTimestamp(bytes32)\":{\"params\":{\"data\":\"The data to query.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"increaseNonce(uint256)\":{\"params\":{\"newNonce\":\"The (higher) new value.\"}},\"isAttestationValid(bytes32)\":{\"params\":{\"uid\":\"The UID of the attestation to retrieve.\"},\"returns\":{\"_0\":\"Whether an attestation exists.\"}},\"multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])\":{\"params\":{\"multiRequests\":\"The arguments of the multi attestation requests. The requests should be grouped by distinct     schema ids to benefit from the best batching optimization.\"},\"returns\":{\"_0\":\"The UIDs of the new attestations. Example:     multiAttest([{         schema: '0x33e9094830a5cba5554d1954310e4fbed2ef5f859ec1404619adea4207f391fd',         data: [{             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 1000         },         {             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 0,             revocable: false,             refUID: '0x480df4a039efc31b11bfdf491b383ca138b6bde160988222a2a3509c02cee174',             data: '0x00',             value: 0         }],     },     {         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',         data: [{             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 0,             revocable: true,             refUID: '0x75bf2ed8dca25a8190c50c52db136664de25b2449535839008ccfdab469b214f',             data: '0x12345678',             value: 0         },     }])\"}},\"multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"params\":{\"multiDelegatedRequests\":\"The arguments of the delegated multi attestation requests. The requests should be     grouped by distinct schema ids to benefit from the best batching optimization.\"},\"returns\":{\"_0\":\"The UIDs of the new attestations. Example:     multiAttestByDelegation([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             recipient: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',             expirationTime: 1673891048,             revocable: true,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x1234',             value: 0         },         {             recipient: '0xdEADBeAFdeAdbEafdeadbeafDeAdbEAFdeadbeaf',             expirationTime: 0,             revocable: false,             refUID: '0x0000000000000000000000000000000000000000000000000000000000000000',             data: '0x00',             value: 0         }],         signatures: [{             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         {             v: 28,             r: '0x487s...67bb',             s: '0x12ad...2366'         }],         attester: '0x1D86495b2A7B524D747d2839b3C645Bed32e8CF4',         deadline: 1673891048     }])\"}},\"multiRevoke((bytes32,(bytes32,uint256)[])[])\":{\"params\":{\"multiRequests\":\"The arguments of the multi revocation requests. The requests should be grouped by distinct     schema ids to benefit from the best batching optimization. Example:     multiRevoke([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',             value: 1000         },         {             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',             value: 0         }],     },     {         schema: '0x5ac273ce41e3c8bfa383efe7c03e54c5f0bff29c9f11ef6ffa930fc84ca32425',         data: [{             uid: '0x053d42abce1fd7c8fcddfae21845ad34dae287b2c326220b03ba241bc5a8f019',             value: 0         },     }])\"}},\"multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"params\":{\"multiDelegatedRequests\":\"The arguments of the delegated multi revocation attestation requests. The requests     should be grouped by distinct schema ids to benefit from the best batching optimization. Example:     multiRevokeByDelegation([{         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: [{             uid: '0x211296a1ca0d7f9f2cfebf0daaa575bea9b20e968d81aef4e743d699c6ac4b25',             value: 1000         },         {             uid: '0xe160ac1bd3606a287b4d53d5d1d6da5895f65b4b4bab6d93aaf5046e48167ade',             value: 0         }],         signatures: [{             v: 28,             r: '0x148c...b25b',             s: '0x5a72...be22'         },         {             v: 28,             r: '0x487s...67bb',             s: '0x12ad...2366'         }],         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',         deadline: 1673891048     }])\"}},\"multiRevokeOffchain(bytes32[])\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was revoked with.\"}},\"multiTimestamp(bytes32[])\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"revoke((bytes32,(bytes32,uint256)))\":{\"params\":{\"request\":\"The arguments of the revocation request. Example:     revoke({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             uid: '0x101032e487642ee04ee17049f99a70590c735b8614079fc9275f9dd57c00966d',             value: 0         }     })\"}},\"revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"params\":{\"delegatedRequest\":\"The arguments of the delegated revocation request. Example:     revokeByDelegation({         schema: '0x8e72f5bc0a8d4be6aa98360baa889040c50a0e51f32dbf0baa5199bd93472ebc',         data: {             uid: '0xcbbc12102578c642a0f7b34fe7111e41afa25683b6cd7b5a14caf90fa14d24ba',             value: 0         },         signature: {             v: 27,             r: '0xb593...7142',             s: '0x0f5b...2cce'         },         revoker: '0x244934dd3e31bE2c81f84ECf0b3E6329F5381992',         deadline: 1673891048     })\"}},\"revokeOffchain(bytes32)\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was revoked with.\"}},\"timestamp(bytes32)\":{\"params\":{\"data\":\"The data to timestamp.\"},\"returns\":{\"_0\":\"The timestamp the data was timestamped with.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Attested(address,address,bytes32,bytes32)\":{\"notice\":\"Emitted when an attestation has been made.\"},\"NonceIncreased(uint256,uint256)\":{\"notice\":\"Emitted when users invalidate nonces by increasing their nonces to (higher) new values.\"},\"Revoked(address,address,bytes32,bytes32)\":{\"notice\":\"Emitted when an attestation has been revoked.\"},\"RevokedOffchain(address,bytes32,uint64)\":{\"notice\":\"Emitted when a data has been revoked.\"},\"Timestamped(bytes32,uint64)\":{\"notice\":\"Emitted when a data has been timestamped.\"}},\"kind\":\"user\",\"methods\":{\"attest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)))\":{\"notice\":\"Attests to a specific schema.\"},\"attestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"notice\":\"Attests to a specific schema via the provided ECDSA signature.\"},\"getAttestTypeHash()\":{\"notice\":\"Returns the EIP712 type hash for the attest function.\"},\"getAttestation(bytes32)\":{\"notice\":\"Returns an existing attestation by UID.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator used in the encoding of the signatures for attest, and revoke.\"},\"getName()\":{\"notice\":\"Returns the EIP712 name.\"},\"getNonce(address)\":{\"notice\":\"Returns the current nonce per-account.\"},\"getRevokeOffchain(address,bytes32)\":{\"notice\":\"Returns the timestamp that the specified data was timestamped with.\"},\"getRevokeTypeHash()\":{\"notice\":\"Returns the EIP712 type hash for the revoke function.\"},\"getSchemaRegistry()\":{\"notice\":\"Returns the address of the global schema registry.\"},\"getTimestamp(bytes32)\":{\"notice\":\"Returns the timestamp that the specified data was timestamped with.\"},\"increaseNonce(uint256)\":{\"notice\":\"Provides users an option to invalidate nonces by increasing their nonces to (higher) new values.\"},\"isAttestationValid(bytes32)\":{\"notice\":\"Checks whether an attestation exists.\"},\"multiAttest((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[])[])\":{\"notice\":\"Attests to multiple schemas.\"},\"multiAttestByDelegation((bytes32,(address,uint64,bool,bytes32,bytes,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"notice\":\"Attests to multiple schemas using via provided ECDSA signatures.\"},\"multiRevoke((bytes32,(bytes32,uint256)[])[])\":{\"notice\":\"Revokes existing attestations to multiple schemas.\"},\"multiRevokeByDelegation((bytes32,(bytes32,uint256)[],(uint8,bytes32,bytes32)[],address,uint64)[])\":{\"notice\":\"Revokes existing attestations to multiple schemas via provided ECDSA signatures.\"},\"multiRevokeOffchain(bytes32[])\":{\"notice\":\"Revokes the specified multiple bytes32 data.\"},\"multiTimestamp(bytes32[])\":{\"notice\":\"Timestamps the specified multiple bytes32 data.\"},\"revoke((bytes32,(bytes32,uint256)))\":{\"notice\":\"Revokes an existing attestation to a specific schema.\"},\"revokeByDelegation((bytes32,(bytes32,uint256),(uint8,bytes32,bytes32),address,uint64))\":{\"notice\":\"Revokes an existing attestation to a specific schema via the provided ECDSA signature.\"},\"revokeOffchain(bytes32)\":{\"notice\":\"Revokes the specified bytes32 data.\"},\"timestamp(bytes32)\":{\"notice\":\"Timestamps the specified bytes32 data.\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CustomEAS.sol\":\"CustomEAS\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/Common.sol\":{\"keccak256\":\"0x957bd2e6d0d6d637f86208b135c29fbaf4412cb08e5e7a61ede16b80561bf685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da1dc9aedbb1d4d39c46c2235918d3adfbc5741dd34a46010cf425d134e7936d\",\"dweb:/ipfs/QmWUk6bXnLaghS2riF3GTFEeURCzgYFMA5woa6AsgPwEgc\"]},\"@ethereum-attestation-service/eas-contracts/contracts/EAS.sol\":{\"keccak256\":\"0x60d59e039e6ec40887e8a946f516b55997d689212c44a89f434119535dd9a3c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5234ba00beaf7a43005c0759e883c6878eecc4d0efeb42c10be8c9e8b17ba21\",\"dweb:/ipfs/QmPdUaubX2Yr9kMSyyYxkY3ueHiGzPfqTq5ubzbmQiQA6B\"]},\"@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol\":{\"keccak256\":\"0xdad0674defce04905dc7935f2756d6c477a6e876c0b1b7094b112a862f164c12\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49e448c26c08952df034692d2ab3519dd40a1ebbeae4ce68b294567441933880\",\"dweb:/ipfs/QmWHcudjskUSCjgqsNWE65LVfWvcYB2vBn8RB1SmzvRLNR\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol\":{\"keccak256\":\"0xea97dcd36a0c422169cbaac06698249e199049b627c16bff93fb8ab829058754\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d453a929ef64a69cd31195ec2ee5ed1193bfa29f633e13c960e92154c37ad158\",\"dweb:/ipfs/QmXs1Z3njbHs2EMgHonrZDfcwdog4kozHY5tYNrhZK5yqz\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/Semver.sol\":{\"keccak256\":\"0x4f23442d048661b6aaa188ddc16b69cb310c2e44066b3852026afcb4201d61a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c36e580cd93d9acb13e1a11e833946a8bd0bd2a8d1b2be049f0d96e0989808\",\"dweb:/ipfs/QmXmQTxKjSrUWutafQsqkbGufXqtzxuDAiMMJjXCHXiEqh\"]},\"@ethereum-attestation-service/eas-contracts/contracts/eip1271/EIP1271Verifier.sol\":{\"keccak256\":\"0x590977110db1256cc00416bdf74eb8264a0eda358ccded303610369a2930b614\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef015b3bee8859e6658c0eac6471d05f2991a5f4b6b5c2aa5571bbdab622d6e9\",\"dweb:/ipfs/QmUHriGkixE62c5qWjyM9DWZFykDcjQ7T6Tbfi3DPD38ym\"]},\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":{\"keccak256\":\"0xb7d1961ed928c620cddf35c2bf46845b10828bc5d73145214630202ed355b6bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf1cabacfb15c9bace8280b540b52e5aa440e1b4eba675f9782c34ce0f03902f\",\"dweb:/ipfs/QmakYcK4xbrijzvoaBCmBJK6HeaBqbXxWKtDQ1z62aXwCR\"]},\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x66c7ec42c6c43712be2107a50ab4529379bc76a632b425babec698d9da921ac6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dce2778f0b638adfc5ba29c2c618c855fe725fa74a16846386aa1d56a834aa04\",\"dweb:/ipfs/QmPV9oWnzQdi58od266j62xvviavLNHqKLZfm6k2K1qy9E\"]},\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0xfb223a85dd0b2175cfbbaa325a744e2cd74ecd17c3df2b77b0722f991d2725ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84bf1dea0589ec49c8d15d559cc6d86ee493048a89b2d4adb60fbe705a3d89ae\",\"dweb:/ipfs/Qmd56n556d529wk2pRMhYhm5nhMDhviwereodDikjs68w1\"]},\"@openzeppelin/contracts/interfaces/IERC7913.sol\":{\"keccak256\":\"0xe5a126930df1d54e4a6dd5fea09010c4a7db0ea974c6c17a1e6082879f5a032b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f58f5a90328536a6c68289916bfa4ed653d871319c7b2a416ab3f6263c4f2f5\",\"dweb:/ipfs/Qmaa9DmgUA16Urz5fuF4RbFz2NaVpNLV41ddwykSdasFUd\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"@openzeppelin/contracts/utils/Bytes.sol\":{\"keccak256\":\"0x1613f93e376ab96791fd29f79da754e253c3d766831bc8c42f50545662f49065\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e88ee314d50d0f323616f88d0ccf5e4110dbdec2775d8d42523bcc8b76ed36eb\",\"dweb:/ipfs/QmQ18ygHRrDdz4AEZXy5PASUHvJk1SNWWKM3TyC1xvDedP\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x17fc4574e07105b0180ef61f1b3cacd1820a3d37f29a4af1018d0a253c6399b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be46b3e1362dbcadbbb45ec92cdea849dceccea3e2795237f00c123aeae44746\",\"dweb:/ipfs/QmSpyB8mud6xKiZaQnVtEPrxtTHGtyBgjs1PCYk4f2gesd\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"keccak256\":\"0x0f39d23ae345355f0913470b15d00c0434754302077ac97cdc038b5c000fc5cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5ebc3233ff506c43e0f9960d2459403f878bbb63b7c71c318f16839564919ac\",\"dweb:/ipfs/QmbctngFd6aQkHVqZeFAL3iHfw4X7wNgfsgUxX8t26U2m4\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"contracts/CustomEAS.sol\":{\"keccak256\":\"0xf4ade198ec0e78b9b9db3f9d9e7d0695a244cd29b8fa5ebe6a72e2c24f006e74\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://223853f1d30fc85de32548d47e9ed977851200afc3daa6cf9a88d419b42db806\",\"dweb:/ipfs/QmTJEDpWT4LnXw8LQwSuZGHsSY8tSHpEk7x29Nqkn3tMvX\"]}},\"version\":1}"
        }
      },
      "contracts/CustomSchemaRegistry.sol": {
        "CustomSchemaRegistry": {
          "abi": [
            {
              "inputs": [],
              "name": "AlreadyExists",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "registerer",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "contract ISchemaResolver",
                      "name": "resolver",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "string",
                      "name": "schema",
                      "type": "string"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SchemaRecord",
                  "name": "schema",
                  "type": "tuple"
                }
              ],
              "name": "Registered",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "uid",
                  "type": "bytes32"
                }
              ],
              "name": "getSchema",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "bytes32",
                      "name": "uid",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "contract ISchemaResolver",
                      "name": "resolver",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "revocable",
                      "type": "bool"
                    },
                    {
                      "internalType": "string",
                      "name": "schema",
                      "type": "string"
                    }
                  ],
                  "internalType": "struct SchemaRecord",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "schema",
                  "type": "string"
                },
                {
                  "internalType": "contract ISchemaResolver",
                  "name": "resolver",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "revocable",
                  "type": "bool"
                }
              ],
              "name": "register",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "version",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60e08060405234603e576001608052600360a0525f60c0526107d29081610043823960805181610458015260a05181610483015260c051816104ae0152f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806354fd4d501461043957806360d7a278146101625763a2ea7c6e1461003a575f80fd5b3461015e57602036600319011261015e5760608060405161005a8161059d565b5f81525f60208201525f604082015201526004355f525f60205260405f206002604051916100878361059d565b8054835260ff600182015460018060a01b038116602086015260a01c161515604084015201906040515f928054906100be826105f7565b808452916001811690811561013657506001146100fc575b50506100e7816100f89403826105b9565b60608201526040519182918261055b565b0390f35b9093505f5260205f205f905b8482106101205750810160200192506100e7816100d6565b6001816020925483858701015201910190610108565b6100f8965084925060209150926100e79360ff191682840152151560051b82010194506100d6565b5f80fd5b3461015e57606036600319011261015e5760043567ffffffffffffffff811161015e573660238201121561015e57806004013567ffffffffffffffff811161015e57366024828401011161015e576024356001600160a01b038116919082900361015e576044359182151580930361015e57604051916101e18361059d565b5f835260208301918252604083019384525f60206101fe836105db565b9261020c60405194856105b9565b80845280602483860199018937830101526060830194818652610275601560208551938851151594604051958692848401985180918a5e8301916bffffffffffffffffffffffff199060601b168483015260f81b60348201520301600a198101845201826105b9565b51902092835f525f60205260405f205461042a57600291848452845f525f60205260405f209184518355600183019160018060a01b0390511682549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b161717905501925192835167ffffffffffffffff8111610416576102f282546105f7565b601f81116103d1575b50806020958690601f831160011461036f575f92610364575b50508160011b915f199060031b1c19161790555b817fd0b86852e21f9e5fa4bc3b0cff9757ffe243d50c4b43968a42202153d651ea5e6040518061035933958261055b565b0390a3604051908152f35b015190508680610314565b5f8581528281209350601f198516905b8181106103ba57509084600195949392106103a2575b505050811b019055610328565b01515f1960f88460031b161c19169055868080610395565b92938960018192878601518155019501930161037f565b825f5260205f20601f830160051c8101916020841061040c575b601f0160051c01905b81811061040157506102fb565b5f81556001016103f4565b90915081906103eb565b634e487b7160e01b5f52604160045260245ffd5b63119b4fd360e11b5f5260045ffd5b3461015e575f36600319011261015e576100f86020610527600161047c7f000000000000000000000000000000000000000000000000000000000000000061062f565b81846104a77f000000000000000000000000000000000000000000000000000000000000000061062f565b81806104d27f000000000000000000000000000000000000000000000000000000000000000061062f565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826105b9565b6040519182916020835260208301905b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a0606061059a936020845280516020850152600180841b03602082015116604085015260408101511515828501520151916080808201520190610537565b90565b6080810190811067ffffffffffffffff82111761041657604052565b90601f8019910116810190811067ffffffffffffffff82111761041657604052565b67ffffffffffffffff811161041657601f01601f191660200190565b90600182811c92168015610625575b602083101461061157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610606565b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b821015610779575b806d04ee2d6d415b85acef8100000000600a92101561075e575b662386f26fc1000081101561074a575b6305f5e100811015610739575b61271081101561072a575b606481101561071c575b1015610711575b600a602160018401936106b6856105db565b946106c460405196876105b9565b8086526106d3601f19916105db565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304801561070c57600a90916106de565b505090565b6001909101906106a4565b60646002910493019261069d565b61271060049104930192610693565b6305f5e10060089104930192610688565b662386f26fc100006010910493019261067b565b6d04ee2d6d415b85acef81000000006020910493019261066b565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b810461065156fea264697066735822122012688bc4d77f45781e5a8e5c6a40a3dbc9e65f8fa33d3e9de63a2767644cfa0464736f6c634300081b0033",
              "opcodes": "PUSH1 0xE0 DUP1 PUSH1 0x40 MSTORE CALLVALUE PUSH1 0x3E JUMPI PUSH1 0x1 PUSH1 0x80 MSTORE PUSH1 0x3 PUSH1 0xA0 MSTORE PUSH0 PUSH1 0xC0 MSTORE PUSH2 0x7D2 SWAP1 DUP2 PUSH2 0x43 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x458 ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0x483 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0x4AE ADD MSTORE RETURN JUMPDEST PUSH0 DUP1 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0x60D7A278 EQ PUSH2 0x162 JUMPI PUSH4 0xA2EA7C6E EQ PUSH2 0x3A JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD PUSH2 0x5A DUP2 PUSH2 0x59D JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x87 DUP4 PUSH2 0x59D JUMP JUMPDEST DUP1 SLOAD DUP4 MSTORE PUSH1 0xFF PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 SHR AND ISZERO ISZERO PUSH1 0x40 DUP5 ADD MSTORE ADD SWAP1 PUSH1 0x40 MLOAD PUSH0 SWAP3 DUP1 SLOAD SWAP1 PUSH2 0xBE DUP3 PUSH2 0x5F7 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x136 JUMPI POP PUSH1 0x1 EQ PUSH2 0xFC JUMPI JUMPDEST POP POP PUSH2 0xE7 DUP2 PUSH2 0xF8 SWAP5 SUB DUP3 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP4 POP PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH0 SWAP1 JUMPDEST DUP5 DUP3 LT PUSH2 0x120 JUMPI POP DUP2 ADD PUSH1 0x20 ADD SWAP3 POP PUSH2 0xE7 DUP2 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x108 JUMP JUMPDEST PUSH2 0xF8 SWAP7 POP DUP5 SWAP3 POP PUSH1 0x20 SWAP2 POP SWAP3 PUSH2 0xE7 SWAP4 PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP5 POP PUSH2 0xD6 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15E JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x15E JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15E JUMPI CALLDATASIZE PUSH1 0x24 DUP3 DUP5 ADD ADD GT PUSH2 0x15E JUMPI PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 SWAP1 DUP3 SWAP1 SUB PUSH2 0x15E JUMPI PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x15E JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1E1 DUP4 PUSH2 0x59D JUMP JUMPDEST PUSH0 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP4 DUP5 MSTORE PUSH0 PUSH1 0x20 PUSH2 0x1FE DUP4 PUSH2 0x5DB JUMP JUMPDEST SWAP3 PUSH2 0x20C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x5B9 JUMP JUMPDEST DUP1 DUP5 MSTORE DUP1 PUSH1 0x24 DUP4 DUP7 ADD SWAP10 ADD DUP10 CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP5 DUP2 DUP7 MSTORE PUSH2 0x275 PUSH1 0x15 PUSH1 0x20 DUP6 MLOAD SWAP4 DUP9 MLOAD ISZERO ISZERO SWAP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP3 DUP5 DUP5 ADD SWAP9 MLOAD DUP1 SWAP2 DUP11 MCOPY DUP4 ADD SWAP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 PUSH1 0x60 SHL AND DUP5 DUP4 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x34 DUP3 ADD MSTORE SUB ADD PUSH1 0xA NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x5B9 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 DUP4 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x42A JUMPI PUSH1 0x2 SWAP2 DUP5 DUP5 MSTORE DUP5 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP5 MLOAD DUP4 SSTORE PUSH1 0x1 DUP4 ADD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND DUP3 SLOAD SWAP2 PUSH1 0xFF PUSH1 0xA0 SHL SWAP1 MLOAD ISZERO ISZERO PUSH1 0xA0 SHL AND SWAP2 PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA8 SHL AND OR OR SWAP1 SSTORE ADD SWAP3 MLOAD SWAP3 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x416 JUMPI PUSH2 0x2F2 DUP3 SLOAD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x3D1 JUMPI JUMPDEST POP DUP1 PUSH1 0x20 SWAP6 DUP7 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x36F JUMPI PUSH0 SWAP3 PUSH2 0x364 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST DUP2 PUSH32 0xD0B86852E21F9E5FA4BC3B0CFF9757FFE243D50C4B43968A42202153D651EA5E PUSH1 0x40 MLOAD DUP1 PUSH2 0x359 CALLER SWAP6 DUP3 PUSH2 0x55B JUMP JUMPDEST SUB SWAP1 LOG3 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST ADD MLOAD SWAP1 POP DUP7 DUP1 PUSH2 0x314 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP4 POP PUSH1 0x1F NOT DUP6 AND SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x3BA JUMPI POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x3A2 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x328 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP7 DUP1 DUP1 PUSH2 0x395 JUMP JUMPDEST SWAP3 SWAP4 DUP10 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x37F JUMP JUMPDEST DUP3 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x40C JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x401 JUMPI POP PUSH2 0x2FB JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3F4 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x3EB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x119B4FD3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH2 0xF8 PUSH1 0x20 PUSH2 0x527 PUSH1 0x1 PUSH2 0x47C PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST DUP2 DUP5 PUSH2 0x4A7 PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST DUP2 DUP1 PUSH2 0x4D2 PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP10 DUP8 DUP12 SWAP9 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP11 ADD MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x60 PUSH2 0x59A SWAP4 PUSH1 0x20 DUP5 MSTORE DUP1 MLOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 DUP1 DUP5 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH1 0x80 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x537 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x416 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x416 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x416 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x625 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x611 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x606 JUMP JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x779 JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x75E JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x74A JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x739 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x72A JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x71C JUMPI JUMPDEST LT ISZERO PUSH2 0x711 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x6B6 DUP6 PUSH2 0x5DB JUMP JUMPDEST SWAP5 PUSH2 0x6C4 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x5B9 JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x6D3 PUSH1 0x1F NOT SWAP2 PUSH2 0x5DB JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x70C JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x6DE JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x6A4 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x69D JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x693 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x688 JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x67B JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x66B JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x651 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH9 0x8BC4D77F45781E5A8E TLOAD PUSH11 0x40A3DBC9E65F8FA33D3E9D 0xE6 GASPRICE 0x27 PUSH8 0x644CFA0464736F6C PUSH4 0x4300081B STOP CALLER ",
              "sourceMap": "174:51:27:-:0;;;;;;;640:1:5;759:14:6;;643:1:5;783:14:6;;646:1:5;807:14:6;;174:51:27;;;;;;759:14:6;174:51:27;;;;;783:14:6;174:51:27;;;;;807:14:6;174:51:27;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "abi_encode_string": {
                  "entryPoint": 1335,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_struct_SchemaRecord": {
                  "entryPoint": 1371,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "array_allocation_size_string": {
                  "entryPoint": 1499,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 1527,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "finalize_allocation": {
                  "entryPoint": 1465,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "finalize_allocation_5816": {
                  "entryPoint": 1437,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "fun_toString": {
                  "entryPoint": 1583,
                  "id": 4057,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [],
              "immutableReferences": {
                "2532": [
                  {
                    "length": 32,
                    "start": 1112
                  }
                ],
                "2534": [
                  {
                    "length": 32,
                    "start": 1155
                  }
                ],
                "2536": [
                  {
                    "length": 32,
                    "start": 1198
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361015610011575f80fd5b5f3560e01c806354fd4d501461043957806360d7a278146101625763a2ea7c6e1461003a575f80fd5b3461015e57602036600319011261015e5760608060405161005a8161059d565b5f81525f60208201525f604082015201526004355f525f60205260405f206002604051916100878361059d565b8054835260ff600182015460018060a01b038116602086015260a01c161515604084015201906040515f928054906100be826105f7565b808452916001811690811561013657506001146100fc575b50506100e7816100f89403826105b9565b60608201526040519182918261055b565b0390f35b9093505f5260205f205f905b8482106101205750810160200192506100e7816100d6565b6001816020925483858701015201910190610108565b6100f8965084925060209150926100e79360ff191682840152151560051b82010194506100d6565b5f80fd5b3461015e57606036600319011261015e5760043567ffffffffffffffff811161015e573660238201121561015e57806004013567ffffffffffffffff811161015e57366024828401011161015e576024356001600160a01b038116919082900361015e576044359182151580930361015e57604051916101e18361059d565b5f835260208301918252604083019384525f60206101fe836105db565b9261020c60405194856105b9565b80845280602483860199018937830101526060830194818652610275601560208551938851151594604051958692848401985180918a5e8301916bffffffffffffffffffffffff199060601b168483015260f81b60348201520301600a198101845201826105b9565b51902092835f525f60205260405f205461042a57600291848452845f525f60205260405f209184518355600183019160018060a01b0390511682549160ff60a01b9051151560a01b16916affffffffffffffffffffff60a81b161717905501925192835167ffffffffffffffff8111610416576102f282546105f7565b601f81116103d1575b50806020958690601f831160011461036f575f92610364575b50508160011b915f199060031b1c19161790555b817fd0b86852e21f9e5fa4bc3b0cff9757ffe243d50c4b43968a42202153d651ea5e6040518061035933958261055b565b0390a3604051908152f35b015190508680610314565b5f8581528281209350601f198516905b8181106103ba57509084600195949392106103a2575b505050811b019055610328565b01515f1960f88460031b161c19169055868080610395565b92938960018192878601518155019501930161037f565b825f5260205f20601f830160051c8101916020841061040c575b601f0160051c01905b81811061040157506102fb565b5f81556001016103f4565b90915081906103eb565b634e487b7160e01b5f52604160045260245ffd5b63119b4fd360e11b5f5260045ffd5b3461015e575f36600319011261015e576100f86020610527600161047c7f000000000000000000000000000000000000000000000000000000000000000061062f565b81846104a77f000000000000000000000000000000000000000000000000000000000000000061062f565b81806104d27f000000000000000000000000000000000000000000000000000000000000000061062f565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826105b9565b6040519182916020835260208301905b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60a0606061059a936020845280516020850152600180841b03602082015116604085015260408101511515828501520151916080808201520190610537565b90565b6080810190811067ffffffffffffffff82111761041657604052565b90601f8019910116810190811067ffffffffffffffff82111761041657604052565b67ffffffffffffffff811161041657601f01601f191660200190565b90600182811c92168015610625575b602083101461061157565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610606565b805f9172184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b821015610779575b806d04ee2d6d415b85acef8100000000600a92101561075e575b662386f26fc1000081101561074a575b6305f5e100811015610739575b61271081101561072a575b606481101561071c575b1015610711575b600a602160018401936106b6856105db565b946106c460405196876105b9565b8086526106d3601f19916105db565b013660208701378401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304801561070c57600a90916106de565b505090565b6001909101906106a4565b60646002910493019261069d565b61271060049104930192610693565b6305f5e10060089104930192610688565b662386f26fc100006010910493019261067b565b6d04ee2d6d415b85acef81000000006020910493019261066b565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b810461065156fea264697066735822122012688bc4d77f45781e5a8e5c6a40a3dbc9e65f8fa33d3e9de63a2767644cfa0464736f6c634300081b0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT ISZERO PUSH2 0x11 JUMPI PUSH0 DUP1 REVERT JUMPDEST PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x439 JUMPI DUP1 PUSH4 0x60D7A278 EQ PUSH2 0x162 JUMPI PUSH4 0xA2EA7C6E EQ PUSH2 0x3A JUMPI PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH1 0x60 DUP1 PUSH1 0x40 MLOAD PUSH2 0x5A DUP2 PUSH2 0x59D JUMP JUMPDEST PUSH0 DUP2 MSTORE PUSH0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MSTORE ADD MSTORE PUSH1 0x4 CALLDATALOAD PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 PUSH1 0x2 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x87 DUP4 PUSH2 0x59D JUMP JUMPDEST DUP1 SLOAD DUP4 MSTORE PUSH1 0xFF PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0xA0 SHR AND ISZERO ISZERO PUSH1 0x40 DUP5 ADD MSTORE ADD SWAP1 PUSH1 0x40 MLOAD PUSH0 SWAP3 DUP1 SLOAD SWAP1 PUSH2 0xBE DUP3 PUSH2 0x5F7 JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP2 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x136 JUMPI POP PUSH1 0x1 EQ PUSH2 0xFC JUMPI JUMPDEST POP POP PUSH2 0xE7 DUP2 PUSH2 0xF8 SWAP5 SUB DUP3 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 DUP3 PUSH2 0x55B JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST SWAP1 SWAP4 POP PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH0 SWAP1 JUMPDEST DUP5 DUP3 LT PUSH2 0x120 JUMPI POP DUP2 ADD PUSH1 0x20 ADD SWAP3 POP PUSH2 0xE7 DUP2 PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 PUSH2 0x108 JUMP JUMPDEST PUSH2 0xF8 SWAP7 POP DUP5 SWAP3 POP PUSH1 0x20 SWAP2 POP SWAP3 PUSH2 0xE7 SWAP4 PUSH1 0xFF NOT AND DUP3 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL DUP3 ADD ADD SWAP5 POP PUSH2 0xD6 JUMP JUMPDEST PUSH0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH1 0x4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15E JUMPI CALLDATASIZE PUSH1 0x23 DUP3 ADD SLT ISZERO PUSH2 0x15E JUMPI DUP1 PUSH1 0x4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x15E JUMPI CALLDATASIZE PUSH1 0x24 DUP3 DUP5 ADD ADD GT PUSH2 0x15E JUMPI PUSH1 0x24 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP2 SWAP1 DUP3 SWAP1 SUB PUSH2 0x15E JUMPI PUSH1 0x44 CALLDATALOAD SWAP2 DUP3 ISZERO ISZERO DUP1 SWAP4 SUB PUSH2 0x15E JUMPI PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1E1 DUP4 PUSH2 0x59D JUMP JUMPDEST PUSH0 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 DUP3 MSTORE PUSH1 0x40 DUP4 ADD SWAP4 DUP5 MSTORE PUSH0 PUSH1 0x20 PUSH2 0x1FE DUP4 PUSH2 0x5DB JUMP JUMPDEST SWAP3 PUSH2 0x20C PUSH1 0x40 MLOAD SWAP5 DUP6 PUSH2 0x5B9 JUMP JUMPDEST DUP1 DUP5 MSTORE DUP1 PUSH1 0x24 DUP4 DUP7 ADD SWAP10 ADD DUP10 CALLDATACOPY DUP4 ADD ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP5 DUP2 DUP7 MSTORE PUSH2 0x275 PUSH1 0x15 PUSH1 0x20 DUP6 MLOAD SWAP4 DUP9 MLOAD ISZERO ISZERO SWAP5 PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP3 DUP5 DUP5 ADD SWAP9 MLOAD DUP1 SWAP2 DUP11 MCOPY DUP4 ADD SWAP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT SWAP1 PUSH1 0x60 SHL AND DUP5 DUP4 ADD MSTORE PUSH1 0xF8 SHL PUSH1 0x34 DUP3 ADD MSTORE SUB ADD PUSH1 0xA NOT DUP2 ADD DUP5 MSTORE ADD DUP3 PUSH2 0x5B9 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP3 DUP4 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SLOAD PUSH2 0x42A JUMPI PUSH1 0x2 SWAP2 DUP5 DUP5 MSTORE DUP5 PUSH0 MSTORE PUSH0 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH0 KECCAK256 SWAP2 DUP5 MLOAD DUP4 SSTORE PUSH1 0x1 DUP4 ADD SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB SWAP1 MLOAD AND DUP3 SLOAD SWAP2 PUSH1 0xFF PUSH1 0xA0 SHL SWAP1 MLOAD ISZERO ISZERO PUSH1 0xA0 SHL AND SWAP2 PUSH11 0xFFFFFFFFFFFFFFFFFFFFFF PUSH1 0xA8 SHL AND OR OR SWAP1 SSTORE ADD SWAP3 MLOAD SWAP3 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x416 JUMPI PUSH2 0x2F2 DUP3 SLOAD PUSH2 0x5F7 JUMP JUMPDEST PUSH1 0x1F DUP2 GT PUSH2 0x3D1 JUMPI JUMPDEST POP DUP1 PUSH1 0x20 SWAP6 DUP7 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x36F JUMPI PUSH0 SWAP3 PUSH2 0x364 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR SWAP1 SSTORE JUMPDEST DUP2 PUSH32 0xD0B86852E21F9E5FA4BC3B0CFF9757FFE243D50C4B43968A42202153D651EA5E PUSH1 0x40 MLOAD DUP1 PUSH2 0x359 CALLER SWAP6 DUP3 PUSH2 0x55B JUMP JUMPDEST SUB SWAP1 LOG3 PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST ADD MLOAD SWAP1 POP DUP7 DUP1 PUSH2 0x314 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP4 POP PUSH1 0x1F NOT DUP6 AND SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x3BA JUMPI POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x3A2 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD SWAP1 SSTORE PUSH2 0x328 JUMP JUMPDEST ADD MLOAD PUSH0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE DUP7 DUP1 DUP1 PUSH2 0x395 JUMP JUMPDEST SWAP3 SWAP4 DUP10 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x37F JUMP JUMPDEST DUP3 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP5 LT PUSH2 0x40C JUMPI JUMPDEST PUSH1 0x1F ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x401 JUMPI POP PUSH2 0x2FB JUMP JUMPDEST PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x3F4 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x3EB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH4 0x119B4FD3 PUSH1 0xE1 SHL PUSH0 MSTORE PUSH1 0x4 PUSH0 REVERT JUMPDEST CALLVALUE PUSH2 0x15E JUMPI PUSH0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x15E JUMPI PUSH2 0xF8 PUSH1 0x20 PUSH2 0x527 PUSH1 0x1 PUSH2 0x47C PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST DUP2 DUP5 PUSH2 0x4A7 PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST DUP2 DUP1 PUSH2 0x4D2 PUSH32 0x0 PUSH2 0x62F JUMP JUMPDEST SWAP3 PUSH1 0x40 MLOAD SWAP10 DUP8 DUP12 SWAP9 MLOAD SWAP2 DUP3 SWAP2 ADD DUP5 DUP11 ADD MCOPY DUP8 ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP4 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x21 DUP4 ADD MCOPY ADD ADD SWAP1 PUSH1 0x17 PUSH1 0xF9 SHL DUP5 DUP4 ADD MSTORE DUP1 MLOAD SWAP3 DUP4 SWAP2 ADD PUSH1 0x2 DUP4 ADD MCOPY ADD ADD PUSH0 DUP4 DUP3 ADD MSTORE SUB ADD PUSH1 0x1F NOT DUP2 ADD DUP4 MSTORE DUP3 PUSH2 0x5B9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 JUMPDEST DUP1 MLOAD DUP1 DUP4 MSTORE PUSH1 0x20 SWAP3 SWAP2 DUP2 SWAP1 DUP5 ADD DUP5 DUP5 ADD MCOPY PUSH0 DUP3 DUP3 ADD DUP5 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0xA0 PUSH1 0x60 PUSH2 0x59A SWAP4 PUSH1 0x20 DUP5 MSTORE DUP1 MLOAD PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 DUP1 DUP5 SHL SUB PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD ISZERO ISZERO DUP3 DUP6 ADD MSTORE ADD MLOAD SWAP2 PUSH1 0x80 DUP1 DUP3 ADD MSTORE ADD SWAP1 PUSH2 0x537 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x416 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x416 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH2 0x416 JUMPI PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x625 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x611 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x606 JUMP JUMPDEST DUP1 PUSH0 SWAP2 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP3 LT ISZERO PUSH2 0x779 JUMPI JUMPDEST DUP1 PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0xA SWAP3 LT ISZERO PUSH2 0x75E JUMPI JUMPDEST PUSH7 0x2386F26FC10000 DUP2 LT ISZERO PUSH2 0x74A JUMPI JUMPDEST PUSH4 0x5F5E100 DUP2 LT ISZERO PUSH2 0x739 JUMPI JUMPDEST PUSH2 0x2710 DUP2 LT ISZERO PUSH2 0x72A JUMPI JUMPDEST PUSH1 0x64 DUP2 LT ISZERO PUSH2 0x71C JUMPI JUMPDEST LT ISZERO PUSH2 0x711 JUMPI JUMPDEST PUSH1 0xA PUSH1 0x21 PUSH1 0x1 DUP5 ADD SWAP4 PUSH2 0x6B6 DUP6 PUSH2 0x5DB JUMP JUMPDEST SWAP5 PUSH2 0x6C4 PUSH1 0x40 MLOAD SWAP7 DUP8 PUSH2 0x5B9 JUMP JUMPDEST DUP1 DUP7 MSTORE PUSH2 0x6D3 PUSH1 0x1F NOT SWAP2 PUSH2 0x5DB JUMP JUMPDEST ADD CALLDATASIZE PUSH1 0x20 DUP8 ADD CALLDATACOPY DUP5 ADD ADD JUMPDEST PUSH0 NOT ADD SWAP2 PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP3 DUP3 MOD BYTE DUP4 MSTORE8 DIV DUP1 ISZERO PUSH2 0x70C JUMPI PUSH1 0xA SWAP1 SWAP2 PUSH2 0x6DE JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x6A4 JUMP JUMPDEST PUSH1 0x64 PUSH1 0x2 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x69D JUMP JUMPDEST PUSH2 0x2710 PUSH1 0x4 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x693 JUMP JUMPDEST PUSH4 0x5F5E100 PUSH1 0x8 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x688 JUMP JUMPDEST PUSH7 0x2386F26FC10000 PUSH1 0x10 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x67B JUMP JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 PUSH1 0x20 SWAP2 DIV SWAP4 ADD SWAP3 PUSH2 0x66B JUMP JUMPDEST POP PUSH1 0x40 SWAP2 POP PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP2 DIV PUSH2 0x651 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT PUSH9 0x8BC4D77F45781E5A8E TLOAD PUSH11 0x40A3DBC9E65F8FA33D3E9D 0xE6 GASPRICE 0x27 PUSH8 0x644CFA0464736F6C PUSH4 0x4300081B STOP CALLER ",
              "sourceMap": "174:51:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;174:51:27;;;;;;;;138:1:0;;;:::i;:::-;174:51:27;;;;;;;;;;;;;;;;;;138:1:0;174:51:27;;138:1:0;174:51:27;;138:1:0;174:51:27;;;138:1:0;;;;:::i;:::-;;;;;174:51:27;;;;;;;;;;;;;;;138:1:0;174:51:27;;;;;;;;138:1:0;174:51:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;138:1:0;174:51:27;;;;;;;:::i;:::-;;;;;138:1:0;;;174:51:27;138:1:0;174:51:27;;138:1:0;174:51:27;;;;;;;;-1:-1:-1;174:51:27;;;;;-1:-1:-1;174:51:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;138:1:0;174:51:27;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;174:51:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;174:51:27;;;;;;;;;;;;;;;;;;;;;;138:1:0;;;;:::i;:::-;174:51:27;138:1:0;;174:51:27;849:146:5;;138:1:0;;;174:51:27;849:146:5;;138:1:0;;;174:51:27;;138:1:0;;;:::i;:::-;174:51:27;138:1:0;174:51:27;;138:1:0;;;:::i;:::-;;;;;174:51:27;138:1:0;;;;174:51:27;138:1:0;;;;;;174:51:27;849:146:5;;138:1:0;;;;1686:84:5;174:51:27;;138:1:0;;;;;174:51:27;;;;;1686:84:5;;;;;;174:51:27;;;;;;;;;;;;;;;;;;;;;;;;;1686:84:5;;;;;;;;;;;:::i;:::-;174:51:27;1676:95:5;;138:1:0;;174:51:27;138:1:0;174:51:27;;138:1:0;174:51:27;;138:1:0;;1051:84:5;;138:1:0;;;;;;174:51:27;138:1:0;174:51:27;;138:1:0;174:51:27;;138:1:0;;;;;;;;;174:51:27;;;;;;138:1:0;;174:51:27;138:1:0;;;;;;;;174:51:27;;138:1:0;;;;;;;;;;;;;174:51:27;;;;;;138:1:0;;;;;;;;:::i;:::-;174:51:27;138:1:0;;;;174:51:27;138:1:0;;174:51:27;138:1:0;;;174:51:27;138:1:0;;;174:51:27;;;;138:1:0;;;;;;;;;;;;;;;;;;;;;;174:51:27;1222:41:5;174:51:27;;1238:10:5;1222:41;1238:10;1222:41;;;:::i;:::-;;;;174:51:27;;;;;;138:1:0;;;;-1:-1:-1;138:1:0;;;;;174:51:27;138:1:0;;;;;;;-1:-1:-1;;;138:1:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;174:51:27;138:1:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;174:51:27;138:1:0;174:51:27;;138:1:0;174:51:27;138:1:0;;;;;;;174:51:27;138:1:0;;;;;174:51:27;138:1:0;;;;;;;;;;;;;;;174:51:27;138:1:0;;;;;;;;;-1:-1:-1;138:1:0;;;;;174:51:27;;;;;;;;;;;1051:84:5;1109:15;;;174:51:27;1109:15:5;174:51:27;;1109:15:5;174:51:27;;;;;;-1:-1:-1;;174:51:27;;;;;1055:104:6;;174:51:27;1072:24:6;1089:6;1072:24;:::i;:::-;1120:6;;1103:24;1120:6;1103:24;:::i;:::-;1151:6;;1134:24;1151:6;1134:24;:::i;:::-;174:51:27;;;;;;;;;;;;1055:104:6;;;174:51:27;;;;-1:-1:-1;;;174:51:27;;;;;;;;;;;;;;;;;-1:-1:-1;;;174:51:27;;;;;;;;;;;;;;;;;;;;;1055:104:6;;;;;;;;;;:::i;:::-;174:51:27;;;;;1055:104:6;174:51:27;;1055:104:6;174:51:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;174:51:27;;;;;;;;-1:-1:-1;;174:51:27;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;138:1:0;174:51:27;;;;;;;;;;;;;:::o;:::-;;;1055:104:6;;174:51:27;;;;;;;;;;;;;;;;:::o;138:1:0:-;;;;;;174:51:27;;-1:-1:-1;;174:51:27;138:1:0;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;174:51:27;;;138:1:0;;;;;;;;;;;;;;;1308:634:18;1430:17;-1:-1:-1;29282:17:23;-1:-1:-1;;;29282:17:23;;;29278:103;;1308:634:18;29398:17:23;29407:8;29978:7;29398:17;;;29394:103;;1308:634:18;29523:8:23;29514:17;;;29510:103;;1308:634:18;29639:7:23;29630:16;;;29626:100;;1308:634:18;29752:7:23;29743:16;;;29739:100;;1308:634:18;29865:7:23;29856:16;;;29852:100;;1308:634:18;29969:16:23;;29965:66;;1308:634:18;29978:7:23;1545:94:18;1450:1;174:51:27;;;;;;:::i;:::-;;138:1:0;174:51:27;;138:1:0;;;:::i;:::-;174:51:27;;;;1055:104:6;;174:51:27;;:::i;:::-;;;;;;;1545:94:18;;;1652:247;-1:-1:-1;;174:51:27;;-1:-1:-1;;;1706:111:18;;;;174:51:27;1706:111:18;174:51:27;1867:10:18;;1863:21;;29978:7:23;1652:247:18;;;;1863:21;1879:5;;1308:634;:::o;29965:66:23:-;30015:1;174:51:27;;;;29965:66:23;;29852:100;29865:7;29936:1;174:51:27;;;;29852:100:23;;;29739;29752:7;29823:1;174:51:27;;;;29739:100:23;;;29626;29639:7;29710:1;174:51:27;;;;29626:100:23;;;29510:103;29523:8;29596:2;174:51:27;;;;29510:103:23;;;29394;29407:8;29480:2;174:51:27;;;;29394:103:23;;;29278;-1:-1:-1;29364:2:23;;-1:-1:-1;;;;174:51:27;;29278:103:23;"
            },
            "methodIdentifiers": {
              "getSchema(bytes32)": "a2ea7c6e",
              "register(string,address,bool)": "60d7a278",
              "version()": "54fd4d50"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AlreadyExists\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"registerer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"struct SchemaRecord\",\"name\":\"schema\",\"type\":\"tuple\"}],\"name\":\"Registered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"}],\"name\":\"getSchema\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"uid\",\"type\":\"bytes32\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"}],\"internalType\":\"struct SchemaRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"schema\",\"type\":\"string\"},{\"internalType\":\"contract ISchemaResolver\",\"name\":\"resolver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"revocable\",\"type\":\"bool\"}],\"name\":\"register\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Registered(bytes32,address,(bytes32,address,bool,string))\":{\"params\":{\"registerer\":\"The address of the account used to register the schema.\",\"schema\":\"The schema data.\",\"uid\":\"The schema UID.\"}}},\"kind\":\"dev\",\"methods\":{\"getSchema(bytes32)\":{\"params\":{\"uid\":\"The UID of the schema to retrieve.\"},\"returns\":{\"_0\":\"The schema data members.\"}},\"register(string,address,bool)\":{\"params\":{\"resolver\":\"An optional schema resolver.\",\"revocable\":\"Whether the schema allows revocations explicitly.\",\"schema\":\"The schema data schema.\"},\"returns\":{\"_0\":\"The UID of the new schema.\"}},\"version()\":{\"returns\":{\"_0\":\"Semver contract version as a string.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Registered(bytes32,address,(bytes32,address,bool,string))\":{\"notice\":\"Emitted when a new schema has been registered\"}},\"kind\":\"user\",\"methods\":{\"getSchema(bytes32)\":{\"notice\":\"Returns an existing schema by UID\"},\"register(string,address,bool)\":{\"notice\":\"Submits and reserves a new schema\"},\"version()\":{\"notice\":\"Returns the full semver contract version.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CustomSchemaRegistry.sol\":\"CustomSchemaRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@ethereum-attestation-service/eas-contracts/contracts/Common.sol\":{\"keccak256\":\"0x957bd2e6d0d6d637f86208b135c29fbaf4412cb08e5e7a61ede16b80561bf685\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da1dc9aedbb1d4d39c46c2235918d3adfbc5741dd34a46010cf425d134e7936d\",\"dweb:/ipfs/QmWUk6bXnLaghS2riF3GTFEeURCzgYFMA5woa6AsgPwEgc\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISchemaRegistry.sol\":{\"keccak256\":\"0xea97dcd36a0c422169cbaac06698249e199049b627c16bff93fb8ab829058754\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d453a929ef64a69cd31195ec2ee5ed1193bfa29f633e13c960e92154c37ad158\",\"dweb:/ipfs/QmXs1Z3njbHs2EMgHonrZDfcwdog4kozHY5tYNrhZK5yqz\"]},\"@ethereum-attestation-service/eas-contracts/contracts/ISemver.sol\":{\"keccak256\":\"0x04a67939b4e1a8d0a51101b8f69f8882930bbdc66319f38023828625b5d1ff18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dd543fa0e33cef1ea757627f9c2a10a66ee1ce17aa9087f437c5b53a903c7f0\",\"dweb:/ipfs/QmXsy6UsGBzF9zPCCjmiwPpCcX3tHqU13TmR67B69tKnR6\"]},\"@ethereum-attestation-service/eas-contracts/contracts/SchemaRegistry.sol\":{\"keccak256\":\"0x03ba24da8053a6ace797cd2683971b4f4a55909adbb3928c57d9864b71ff0a56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://14ef01ae0216b9f2eaa794f2bb49705c2d2df6d65e667d8a47d13a2fd3201d79\",\"dweb:/ipfs/QmYALhY8KaD5AhgHiUxZWxpMuD4eznae9dLr9594kZFSgm\"]},\"@ethereum-attestation-service/eas-contracts/contracts/Semver.sol\":{\"keccak256\":\"0x4f23442d048661b6aaa188ddc16b69cb310c2e44066b3852026afcb4201d61a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c36e580cd93d9acb13e1a11e833946a8bd0bd2a8d1b2be049f0d96e0989808\",\"dweb:/ipfs/QmXmQTxKjSrUWutafQsqkbGufXqtzxuDAiMMJjXCHXiEqh\"]},\"@ethereum-attestation-service/eas-contracts/contracts/resolver/ISchemaResolver.sol\":{\"keccak256\":\"0xb7d1961ed928c620cddf35c2bf46845b10828bc5d73145214630202ed355b6bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cf1cabacfb15c9bace8280b540b52e5aa440e1b4eba675f9782c34ce0f03902f\",\"dweb:/ipfs/QmakYcK4xbrijzvoaBCmBJK6HeaBqbXxWKtDQ1z62aXwCR\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xad148d59f05165f9217d0a9e1ac8f772abb02ea6aaad8a756315c532bf79f9f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15e3599867c2182f5831e9268b274b2ef2047825837df6b4d81c9e89254b093e\",\"dweb:/ipfs/QmZbL7XAYr5RmaNaooPgZRmcDXaudfsYQfYD9y5iAECvpS\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"contracts/CustomSchemaRegistry.sol\":{\"keccak256\":\"0xba20fffbacdc902f4e1d94debe0c6774acfba77e4a29af6b3f886224bbd955e5\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://fdca4df8406bd44f626f99b3922ed6135e6fdb22fc59746f7df1151231ea7ed7\",\"dweb:/ipfs/Qma5Hg5Li42Jjfg3wKndxtUpQCK23DyCqfiV6v8zdbTD9t\"]}},\"version\":1}"
        }
      }
    }
  }
}